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})