test/errors_test.rb in reform-2.2.3 vs test/errors_test.rb in reform-2.2.4

- old
+ new

@@ -1,165 +1,165 @@ -# require "test_helper" +require "test_helper" -# class ErrorsTest < MiniTest::Spec -# class AlbumForm < Reform::Form -# property :title +class ErrorsTest < MiniTest::Spec + class AlbumForm < Reform::Form + property :title -# property :hit do -# property :title -# validation do -# key(:title).required -# end -# end + property :hit do + property :title + validation do + required(:title).filled + end + end -# collection :songs do -# property :title -# validation do -# key(:title).required -# end -# end + collection :songs do + property :title + validation do + required(:title).filled + end + end -# property :band do # yepp, people do crazy stuff like that. -# property :name -# property :label do -# property :name -# validation do -# key(:name).required -# end -# end -# # TODO: make band a required object. + property :band do # yepp, people do crazy stuff like that. + property :name + property :label do + property :name + validation do + required(:name).filled + end + end + # TODO: make band a required object. -# validation do -# key(:name).required(:music_taste_ok?) + validation do + # required(:name).filled(:music_taste_ok?) -# configure do -# config.messages_file = "test/validation/errors.yml" + configure do + config.messages_file = "test/validation/errors.yml" -# def music_taste_ok?(value) -# value != "Nickelback" -# # errors.add(:base, "You are a bad person") if name == "Nickelback" -# end -# end -# end -# # validate :music_taste_ok? + def music_taste_ok?(value) + value != "Nickelback" + # errors.add(:base, "You are a bad person") if name == "Nickelback" + end + end + end + # validate :music_taste_ok? -# # private -# # def music_taste_ok? -# # errors.add(:base, "You are a bad person") if name == "Nickelback" -# # end -# end + # private + # def music_taste_ok? + # errors.add(:base, "You are a bad person") if name == "Nickelback" + # end + end -# validation do -# key(:title).required -# end -# end + validation do + required(:title).filled + end + end -# let (:album) do -# OpenStruct.new( -# :title => "Blackhawks Over Los Angeles", -# :hit => song, -# :songs => songs, # TODO: document this requirement, + let (:album) do + OpenStruct.new( + :title => "Blackhawks Over Los Angeles", + :hit => song, + :songs => songs, # TODO: document this requirement, -# :band => Struct.new(:name, :label).new("Epitaph", OpenStruct.new), -# ) -# end -# let (:song) { OpenStruct.new(:title => "Downtown") } -# let (:songs) { [song=OpenStruct.new(:title => "Calling"), song] } -# let (:form) { AlbumForm.new(album) } + :band => Struct.new(:name, :label).new("Epitaph", OpenStruct.new), + ) + end + let (:song) { OpenStruct.new(:title => "Downtown") } + let (:songs) { [song=OpenStruct.new(:title => "Calling"), song] } + let (:form) { AlbumForm.new(album) } -# describe "incorrect #validate" do -# before { form.validate( -# "hit" =>{"title" => ""}, -# "title" => "", -# "songs" => [{"title" => ""}, {"title" => ""}]) } # FIXME: what happens if item is missing? + describe "incorrect #validate" do + before { form.validate( + "hit" =>{"title" => ""}, + "title" => "", + "songs" => [{"title" => ""}, {"title" => ""}]) } # FIXME: what happens if item is missing? -# it do -# form.errors.messages.must_equal({ -# :title => ["must be filled"], -# :"hit.title"=>["must be filled"], -# :"songs.title"=>["must be filled"], -# :"band.label.name"=>["is missing"] -# }) -# end + it do + form.errors.messages.must_equal({ + :title => ["must be filled"], + :"hit.title"=>["must be filled"], + :"songs.title"=>["must be filled"], + :"band.label.name"=>["is missing"] + }) + end -# it do -# #form.errors.must_equal({:title => ["must be filled"]}) -# # TODO: this should only contain local errors? -# end + it do + #form.errors.must_equal({:title => ["must be filled"]}) + # TODO: this should only contain local errors? + end -# # nested forms keep their own Errors: -# it { form.hit.errors.messages.must_equal({:title=>["must be filled"]}) } -# it { form.songs[0].errors.messages.must_equal({:title=>["must be filled"]}) } + # nested forms keep their own Errors: + it { form.hit.errors.messages.must_equal({:title=>["must be filled"]}) } + it { form.songs[0].errors.messages.must_equal({:title=>["must be filled"]}) } -# it do -# form.errors.messages.must_equal({ -# :title => ["must be filled"], -# :"hit.title" => ["must be filled"], -# :"songs.title"=> ["must be filled"], -# :"band.label.name"=>["is missing"] -# }) -# end -# end + it do + form.errors.messages.must_equal({ + :title => ["must be filled"], + :"hit.title" => ["must be filled"], + :"songs.title"=> ["must be filled"], + :"band.label.name"=>["is missing"] + }) + end + end -# describe "#validate with main form invalid" do -# it do -# form.validate("title"=>"", "band"=>{"label"=>{:name => "Fat Wreck"}}).must_equal false -# form.errors.messages.must_equal({:title=>["must be filled"]}) -# end -# end + describe "#validate with main form invalid" do + it do + form.validate("title"=>"", "band"=>{"label"=>{:name => "Fat Wreck"}}).must_equal false + form.errors.messages.must_equal({:title=>["must be filled"]}) + end + end -# describe "#validate with middle nested form invalid" do -# before { @result = form.validate("hit"=>{"title" => ""}, "band"=>{"label"=>{:name => "Fat Wreck"}}) } + describe "#validate with middle nested form invalid" do + before { @result = form.validate("hit"=>{"title" => ""}, "band"=>{"label"=>{:name => "Fat Wreck"}}) } -# it { @result.must_equal false } -# it { form.errors.messages.must_equal({:"hit.title"=>["must be filled"]}) } -# end + it { @result.must_equal false } + it { form.errors.messages.must_equal({:"hit.title"=>["must be filled"]}) } + end -# describe "#validate with collection form invalid" do -# before { @result = form.validate("songs"=>[{"title" => ""}], "band"=>{"label"=>{:name => "Fat Wreck"}}) } + describe "#validate with collection form invalid" do + before { @result = form.validate("songs"=>[{"title" => ""}], "band"=>{"label"=>{:name => "Fat Wreck"}}) } -# it { @result.must_equal false } -# it { form.errors.messages.must_equal({:"songs.title"=>["must be filled"]}) } -# end + it { @result.must_equal false } + it { form.errors.messages.must_equal({:"songs.title"=>["must be filled"]}) } + end -# describe "#validate with collection and 2-level-nested invalid" do -# before { @result = form.validate("songs"=>[{"title" => ""}], "band" => {"label" => {}}) } + describe "#validate with collection and 2-level-nested invalid" do + before { @result = form.validate("songs"=>[{"title" => ""}], "band" => {"label" => {}}) } -# it { @result.must_equal false } -# it { form.errors.messages.must_equal({:"songs.title"=>["must be filled"], :"band.label.name"=>["is missing"]}) } -# end + it { @result.must_equal false } + it { form.errors.messages.must_equal({:"songs.title"=>["must be filled"], :"band.label.name"=>["is missing"]}) } + end -# describe "#validate with nested form using :base invalid" do -# it do -# result = form.validate("songs"=>[{"title" => "Someday"}], "band" => {"name" => "Nickelback", "label" => {"name" => "Roadrunner Records"}}) -# result.must_equal false -# form.errors.messages.must_equal({:"band.name"=>["You are a bad person"]}) -# end -# end + describe "#validate with nested form using :base invalid" do + it do + result = form.validate("songs"=>[{"title" => "Someday"}], "band" => {"name" => "Nickelback", "label" => {"name" => "Roadrunner Records"}}) + result.must_equal false + form.errors.messages.must_equal({:"band.name"=>["You are a bad person"]}) + end + end -# describe "correct #validate" do -# before { @result = form.validate( -# "hit" => {"title" => "Sacrifice"}, -# "title" => "Second Heat", -# "songs" => [{"title"=>"Heart Of A Lion"}], -# "band" => {"label"=>{:name => "Fat Wreck"}} -# ) } + describe "correct #validate" do + before { @result = form.validate( + "hit" => {"title" => "Sacrifice"}, + "title" => "Second Heat", + "songs" => [{"title"=>"Heart Of A Lion"}], + "band" => {"label"=>{:name => "Fat Wreck"}} + ) } -# it { @result.must_equal true } -# it { form.hit.title.must_equal "Sacrifice" } -# it { form.title.must_equal "Second Heat" } -# it { form.songs.first.title.must_equal "Heart Of A Lion" } -# end + it { @result.must_equal true } + it { form.hit.title.must_equal "Sacrifice" } + it { form.title.must_equal "Second Heat" } + it { form.songs.first.title.must_equal "Heart Of A Lion" } + end -# describe "Errors#to_s" do -# before { form.validate("songs"=>[{"title" => ""}], "band" => {"label" => {}}) } + describe "Errors#to_s" do + before { form.validate("songs"=>[{"title" => ""}], "band" => {"label" => {}}) } -# # to_s is aliased to messages -# it { form.errors.to_s.must_equal "{:\"songs.title\"=>[\"must be filled\"], :\"band.label.name\"=>[\"is missing\"]}" } -# end -# end + # to_s is aliased to messages + it { form.errors.to_s.must_equal "{:\"songs.title\"=>[\"must be filled\"], :\"band.label.name\"=>[\"is missing\"]}" } + end +end