test/sequel_test.rb in giraffesoft-classy_resources-0.2.1 vs test/sequel_test.rb in giraffesoft-classy_resources-0.3.0
- old
+ new
@@ -43,10 +43,20 @@
expect { assert_equal 200, @response.status }
expect { assert_equal @user.to_xml, @response.body }
expect { assert_equal "application/xml", @response.content_type }
end
+ context "on GET to /users/id with a missing user" do
+ setup do
+ get "/users/missing.xml"
+ end
+
+ expect { assert_equal 404, @response.status }
+ expect { assert @response.body.empty? }
+ expect { assert_equal "application/xml", @response.content_type }
+ end
+
context "on PUT to /users/id" do
setup do
@user = create_user
put "/users/#{@user.id}.xml", :user => {:name => "Changed!"}
end
@@ -58,53 +68,70 @@
should "update the user" do
assert_equal "Changed!", @user.reload.name
end
end
- context "on DELETE to /users/id" do
+ context "on PUT to /users/id with invalid params" do
setup do
@user = create_user
- delete "/users/#{@user.id}.xml"
+ put "/users/#{@user.id}.xml", :user => {:name => ""}
+ @invalid_user = User.new
+ @invalid_user.valid?
end
- expect { assert_equal 200, @response.status }
+ expect { assert_equal 422, @response.status }
+ expect { assert_equal @invalid_user.errors.to_xml, @response.body }
expect { assert_equal "application/xml", @response.content_type }
- should "destroy the user" do
- assert_nil User.find(:id => @user.id)
+ should "not update the user" do
+ assert_not_equal "Changed!", @user.reload.name
end
end
- context "on GET to /users/id/comments" do
+ context "on PUT to /users/id with a missing user" do
setup do
+ put "/users/missing.xml", :user => {:name => "Changed!"}
+ end
+
+ expect { assert_equal 404, @response.status }
+ expect { assert @response.body.empty? }
+ expect { assert_equal "application/xml", @response.content_type }
+ end
+
+ context "on DELETE to /users/id" do
+ setup do
@user = create_user
- 2.times { @user.add_subscription(Subscription.new(hash_for_subscription)) }
- 2.times { create_subscription(:user_id => 9) }
- get "/users/#{@user.id}/subscriptions.xml"
+ delete "/users/#{@user.id}.xml"
end
expect { assert_equal 200, @response.status }
expect { assert_equal "application/xml", @response.content_type }
- expect { assert_equal @user.subscriptions.to_xml, @response.body }
+
+ should "destroy the user" do
+ assert_nil User.find(:id => @user.id)
+ end
end
- context "on POST to /users/id/subscriptions" do
+ context "on DELETE to /users/id with a missing user" do
setup do
- @user = create_user
- post "/users/#{@user.id}/subscriptions.xml", :subscription => hash_for_subscription
+ delete "/users/missing.xml"
end
- expect { assert_equal 201, @response.status }
+ expect { assert_equal 404, @response.status }
expect { assert_equal "application/xml", @response.content_type }
- expect { assert_equal "/subscriptions/#{@user.reload.subscriptions.first.id}.xml", @response.location }
- expect { assert_equal 1, @user.reload.subscriptions.length }
+ expect { assert @response.body.empty? }
end
- context "on POST to /users/id/subscriptions with no params" do
- should "not raise" do
- @user = create_user
- assert_nothing_raised {
- post "/users/#{@user.id}/subscriptions.xml", :subscription => {}
- }
+ context "on POST to /subscriptions with invalid params" do
+ setup do
+ Subscription.destroy_all
+ @subscription = Subscription.new
+ @subscription.valid?
+ post "/subscriptions.xml", :subscription => {}
end
+
+ expect { assert_equal 422, @response.status }
+ expect { assert_equal "application/xml", @response.content_type }
+ expect { assert_equal 0, Subscription.count }
+ expect { assert_equal @subscription.errors.to_xml, @response.body }
end
end