spec/integration/assertion_spec.rb in assertion-0.2.3 vs spec/integration/assertion_spec.rb in assertion-0.2.4

- old
+ new

@@ -13,25 +13,47 @@ IsAdult = Assertion.about :name, :age do age.to_i >= 18 end - jane = { name: "Jane", gender: :female, age: 19 } + class IsCat < Assertion::Base + attribute :species, :name - jane_is_a_male = IsMale[jane] + def check + species == :cat + end + + def truthy + "#{name} is a cat" + end + + def falsey + "#{name} is not a cat" + end + end + + jane = { name: "Jane", gender: :female, age: 19, species: :human } + john = { name: "John", gender: :male, age: 9, species: :cat } + jane_is_a_female = IsMale.not[jane] jane_is_an_adult = IsAdult[jane] - jane_is_a_child = IsAdult.not[jane] - jane_is_a_women = jane_is_a_female & jane_is_an_adult expect(jane_is_a_women).to be_valid expect { jane_is_a_women.validate! }.not_to raise_error + jane_is_a_male = IsMale[jane] + jane_is_a_child = IsAdult.not[jane] jane_is_a_boy = jane_is_a_male & jane_is_a_child expect(jane_is_a_boy).not_to be_valid expect(jane_is_a_boy.messages) .to eql ["Jane is a female", "Jane is an adult (age 19)"] expect { jane_is_a_boy.validate! }.to raise_error Assertion::InvalidError + + jane_is_a_cat = IsCat[jane] + expect(jane_is_a_cat.messages).to eql ["Jane is not a cat"] + + john_is_not_a_cat = IsCat.not[john] + expect(john_is_not_a_cat.messages).to eql ["John is a cat"] end after do Object.send :remove_const, :IsAdult Object.send :remove_const, :IsMale