test/aliases_test.rb in josevalim-inherited_resources-0.1.2 vs test/aliases_test.rb in josevalim-inherited_resources-0.2.0
- old
+ new
@@ -1,10 +1,12 @@
# Now we are going to test aliases defined in base.rb and if overwriting
# methods works properly.
require File.dirname(__FILE__) + '/test_helper'
-class Student; end
+class Student;
+ def self.human_name; 'Student'; end
+end
class StudentsController < InheritedResources::Base
def edit
edit! do |format|
@@ -15,10 +17,29 @@
def new
@something = 'magical'
new!
end
+ def create
+ create! do |success, failure|
+ success.html { render :text => "I won't redirect!" }
+ end
+ end
+
+ def update
+ update! do |success, failure|
+ success.html { redirect_to(resource_url) }
+ failure.html { render :text => "I won't render!" }
+ end
+ end
+
+ def destroy
+ destroy! do |format|
+ format.html { render :text => "Destroyed!" }
+ end
+ end
+
end
class AliasesBaseTest < TEST_CLASS
def setup
@@ -39,11 +60,11 @@
get :new
assert_response :success
assert_equal 'New HTML', @response.body.strip
end
- def test_expose_the_resquested_user
+ def test_expose_the_resquested_user_on_edit
Student.expects(:find).with('42').returns(mock_student)
get :edit, :id => '42'
assert_equal mock_student, assigns(:student)
assert_response :success
end
@@ -59,9 +80,45 @@
@request.accept = 'application/xml'
Student.stubs(:find).returns(mock_student)
get :edit
assert_response :success
assert_equal 'Render XML', @response.body
+ end
+
+ def test_is_not_redirected_on_create_with_success_if_success_block_is_given
+ Student.stubs(:new).returns(mock_student(:save => true))
+ @controller.stubs(:resource_url).returns('http://test.host/')
+ post :create
+ assert_response :success
+ assert_equal "I won't redirect!", @response.body
+ end
+
+ def test_dumb_responder_with_quietly_receive_everything_on_failure
+ Student.stubs(:new).returns(mock_student(:save => false, :errors => []))
+ @controller.stubs(:resource_url).returns('http://test.host/')
+ post :create
+ assert_response :success
+ assert_template :edit
+ end
+
+ def test_wont_render_edit_template_on_update_with_failure_if_failure_block_is_given
+ Student.stubs(:find).returns(mock_student(:update_attributes => false, :errors => []))
+ put :update
+ assert_response :success
+ assert_equal "I won't render!", @response.body
+ end
+
+ def test_dumb_responder_with_quietly_receive_everything_on_success
+ Student.stubs(:find).returns(mock_student(:update_attributes => true))
+ put :update, :id => '42', :student => {:these => 'params'}
+ assert_equal mock_student, assigns(:student)
+ end
+
+ def test_block_is_called_when_student_is_destroyed
+ Student.stubs(:find).returns(mock_student(:destroy => true))
+ delete :destroy
+ assert_response :success
+ assert_equal "Destroyed!", @response.body
end
protected
def mock_student(stubs={})
@mock_student ||= mock(stubs)