spec/amfetamine/base_spec.rb in amfetamine-0.3.2 vs spec/amfetamine/base_spec.rb in amfetamine-0.3.3

- old
+ new

@@ -12,11 +12,11 @@ its(:description) { should ==('Crash me!')} its(:to_json) { should match(/dummy/) } end - describe "Class dummy, setup with amfetamine::base" do + describe "Class dummy, setup with Amfetamine::Base" do let(:dummy) { build(:dummy) } let(:dummy2) { build(:dummy) } subject { Dummy} it { should be_cacheable } @@ -81,27 +81,33 @@ context "#create" do it "should create an object if data is correct" do Dummy.prevent_external_connections! do |r| r.post(:code => 201) {} - new_dummy = Dummy.create({:title => 'test', :description => 'blabla'}) new_dummy.should be_a(Dummy) new_dummy.should_not be_new new_dummy.should be_cached end end - it "should return errors if data is incorrect" do + it "sets errors hash if local validations fail" do + new_dummy = Dummy.create({ title: 'test' }) + new_dummy.should be_new + new_dummy.errors.messages.should eql({ description: ["can't be blank"] }) + new_dummy.should_not be_cached + end + + it "sets errors hash if remote validations fail" do + error_message = "has already been taken" Dummy.prevent_external_connections! do |r| - r.post(:code => 422) {{:description => ['can\'t be blank']}} - new_dummy = Dummy.create({:title => 'test'}) + r.post(code: 422) { { title: [error_message] } } + new_dummy = Dummy.create({ title: 'test', description: 'test' }) new_dummy.should be_new - new_dummy.errors.messages.should eq({:description => ['can\'t be blank']}) + new_dummy.errors.messages.should eql({ title: [error_message] }) new_dummy.should_not be_cached end - end end context "#update" do before do @@ -125,18 +131,21 @@ dummy.update_attributes({ :title => 'zomg' }).should be_true end Dummy.disable_caching = false end - it "should show errors if response is not succesful" do - Dummy.prevent_external_connections! do |r| - r.put(:code => 422) { [:title => ['can\'t be blank']]} + it "sets errors hash if local validations fail" do + dummy.update_attributes({ title: "" }) + dummy.errors.messages.should eql({ title: ["can't be blank"] }) + end - dummy.update_attributes({:title => ''}) + it "sets errors hash if remote validations fail" do + error_message = "has already been taken" + Dummy.prevent_external_connections! do |r| + r.put(code: 422) { { title: [error_message] } } + dummy.update_attributes({ title: "abc" }) + dummy.errors.messages.should eql({ title: [error_message] }) end - - dummy.should_not be_new - dummy.errors.messages.should eq({:title => ['can\'t be blank']}) end it "should not do a request if the data doesn't change" do # Assumes that dummy.update would raise if not within stubbed request. dummy.update_attributes({:title => dummy.title})