spec/errors_spec.rb in mutations-0.5.9 vs spec/errors_spec.rb in mutations-0.5.10

- old
+ new

@@ -1,93 +1,93 @@ require_relative 'spec_helper' describe "Mutations - errors" do - + class GivesErrors < Mutations::Command required do string :str1 string :str2, :in => %w(opt1 opt2 opt3) end - + optional do integer :int1 hash :hash1 do boolean :bool1 boolean :bool2 end array :arr1 do integer end end - + def execute inputs end end - + it "returns an ErrorHash as the top level error object, and ErrorAtom's inside" do o = GivesErrors.run(hash1: 1, arr1: "bob") - + assert !o.success? assert o.errors.is_a?(Mutations::ErrorHash) assert o.errors[:str1].is_a?(Mutations::ErrorAtom) assert o.errors[:str2].is_a?(Mutations::ErrorAtom) assert_nil o.errors[:int1] assert o.errors[:hash1].is_a?(Mutations::ErrorAtom) assert o.errors[:arr1].is_a?(Mutations::ErrorAtom) end - + it "returns an ErrorHash for nested hashes" do o = GivesErrors.run(hash1: {bool1: "poop"}) - + assert !o.success? assert o.errors.is_a?(Mutations::ErrorHash) assert o.errors[:hash1].is_a?(Mutations::ErrorHash) assert o.errors[:hash1][:bool1].is_a?(Mutations::ErrorAtom) assert o.errors[:hash1][:bool2].is_a?(Mutations::ErrorAtom) end - + it "returns an ErrorArray for errors in arrays" do o = GivesErrors.run(str1: "a", str2: "opt1", arr1: ["bob", 1, "sally"]) - + assert !o.success? assert o.errors.is_a?(Mutations::ErrorHash) assert o.errors[:arr1].is_a?(Mutations::ErrorArray) assert o.errors[:arr1][0].is_a?(Mutations::ErrorAtom) assert_nil o.errors[:arr1][1] assert o.errors[:arr1][2].is_a?(Mutations::ErrorAtom) end - + it "titleizes keys" do atom = Mutations::ErrorAtom.new(:newsletter_subscription, :boolean) assert_equal "Newsletter Subscription isn't a boolean", atom.message end - + describe "Bunch o errors" do - before do + before do @outcome = GivesErrors.run(str1: "", str2: "opt9", int1: "zero", hash1: {bool1: "bob"}, arr1: ["bob", 1, "sally"]) end - + it "gives symbolic errors" do expected = {"str1"=>:empty, "str2"=>:in, "int1"=>:integer, "hash1"=>{"bool1"=>:boolean, "bool2"=>:required}, "arr1"=>[:integer, nil, :integer]} assert_equal expected, @outcome.errors.symbolic end - + it "gives messages" do expected = {"str1"=>"Str1 can't be blank", "str2"=>"Str2 isn't an option", "int1"=>"Int1 isn't an integer", "hash1"=>{"bool1"=>"Bool1 isn't a boolean", "bool2"=>"Bool2 is required"}, "arr1"=>["Arr1[0] isn't an integer", nil, "Arr1[2] isn't an integer"]} assert_equal expected, @outcome.errors.message end - + it "can flatten those messages" do expected = ["Str1 can't be blank", "Str2 isn't an option", "Int1 isn't an integer", "Bool1 isn't a boolean", "Bool2 is required", "Arr1[0] isn't an integer", "Arr1[2] isn't an integer"] - + assert_equal expected, @outcome.errors.message_list end end - - - + + + end \ No newline at end of file