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