test/polymorphic_test.rb in josevalim-inherited_resources-0.5.2 vs test/polymorphic_test.rb in josevalim-inherited_resources-0.6.0

- old
+ new

@@ -9,101 +9,176 @@ class EmployeesController < InheritedResources::Base belongs_to :factory, :company, :polymorphic => true end -class PolymorphicTest < TEST_CLASS +class PolymorphicFactoriesTest < ActionController::TestCase + tests EmployeesController def setup - @controller = EmployeesController.new - @controller.request = @request = ActionController::TestRequest.new - @controller.response = @response = ActionController::TestResponse.new + Factory.expects(:find).with('37').returns(mock_factory) + mock_factory.expects(:employees).returns(Employee) + + @controller.stubs(:resource_url).returns('/') + @controller.stubs(:collection_url).returns('/') end def test_expose_all_employees_as_instance_variable_on_index - Factory.expects(:find).with('37').returns(mock_factory) - mock_factory.expects(:employees).returns(Employee) Employee.expects(:find).with(:all).returns([mock_employee]) get :index, :factory_id => '37' assert_equal mock_factory, assigns(:factory) assert_equal [mock_employee], assigns(:employees) end def test_expose_the_resquested_employee_on_show - Factory.expects(:find).with('37').returns(mock_factory) - mock_factory.expects(:employees).returns(Employee) Employee.expects(:find).with('42').returns(mock_employee) get :show, :id => '42', :factory_id => '37' assert_equal mock_factory, assigns(:factory) assert_equal mock_employee, assigns(:employee) end def test_expose_a_new_employee_on_new - Factory.expects(:find).with('37').returns(mock_factory) - mock_factory.expects(:employees).returns(Employee) Employee.expects(:build).returns(mock_employee) get :new, :factory_id => '37' assert_equal mock_factory, assigns(:factory) assert_equal mock_employee, assigns(:employee) end def test_expose_the_resquested_employee_on_edit - Factory.expects(:find).with('37').returns(mock_factory) - mock_factory.expects(:employees).returns(Employee) Employee.expects(:find).with('42').returns(mock_employee) get :edit, :id => '42', :factory_id => '37' assert_equal mock_factory, assigns(:factory) assert_equal mock_employee, assigns(:employee) assert_response :success end def test_expose_a_newly_create_employee_on_create - Factory.expects(:find).with('37').returns(mock_factory) - mock_factory.expects(:employees).returns(Employee) Employee.expects(:build).with({'these' => 'params'}).returns(mock_employee(:save => true)) post :create, :factory_id => '37', :employee => {:these => 'params'} assert_equal mock_factory, assigns(:factory) assert_equal mock_employee, assigns(:employee) end def test_update_the_requested_object_on_update - Factory.expects(:find).with('37').returns(mock_factory) - mock_factory.expects(:employees).returns(Employee) Employee.expects(:find).with('42').returns(mock_employee) mock_employee.expects(:update_attributes).with({'these' => 'params'}).returns(true) put :update, :id => '42', :factory_id => '37', :employee => {:these => 'params'} assert_equal mock_factory, assigns(:factory) assert_equal mock_employee, assigns(:employee) end def test_the_resquested_employee_is_destroyed_on_destroy - Factory.expects(:find).with('37').returns(mock_factory) - mock_factory.expects(:employees).returns(Employee) Employee.expects(:find).with('42').returns(mock_employee) mock_employee.expects(:destroy) delete :destroy, :id => '42', :factory_id => '37' assert_equal mock_factory, assigns(:factory) assert_equal mock_employee, assigns(:employee) end def test_polymorphic_helpers - new_factory = Factory.new - Factory.expects(:find).with('37').returns(new_factory) - new_factory.expects(:employees).returns(Employee) + mock_factory.stubs(:class).returns(Factory) + Employee.expects(:find).with(:all).returns([mock_employee]) get :index, :factory_id => '37' assert @controller.send(:parent?) assert_equal :factory, assigns(:parent_type) assert_equal :factory, @controller.send(:parent_type) assert_equal Factory, @controller.send(:parent_class) - assert_equal new_factory, assigns(:factory) - assert_equal new_factory, @controller.send(:parent) + assert_equal mock_factory, assigns(:factory) + assert_equal mock_factory, @controller.send(:parent) end protected def mock_factory(stubs={}) @mock_factory ||= mock(stubs) + end + + def mock_employee(stubs={}) + @mock_employee ||= mock(stubs) + end +end + +class PolymorphicCompanyTest < ActionController::TestCase + tests EmployeesController + + def setup + Company.expects(:find).with('37').returns(mock_company) + mock_company.expects(:employees).returns(Employee) + + @controller.stubs(:resource_url).returns('/') + @controller.stubs(:collection_url).returns('/') + end + + def test_expose_all_employees_as_instance_variable_on_index + Employee.expects(:find).with(:all).returns([mock_employee]) + get :index, :company_id => '37' + assert_equal mock_company, assigns(:company) + assert_equal [mock_employee], assigns(:employees) + end + + def test_expose_the_resquested_employee_on_show + Employee.expects(:find).with('42').returns(mock_employee) + get :show, :id => '42', :company_id => '37' + assert_equal mock_company, assigns(:company) + assert_equal mock_employee, assigns(:employee) + end + + def test_expose_a_new_employee_on_new + Employee.expects(:build).returns(mock_employee) + get :new, :company_id => '37' + assert_equal mock_company, assigns(:company) + assert_equal mock_employee, assigns(:employee) + end + + def test_expose_the_resquested_employee_on_edit + Employee.expects(:find).with('42').returns(mock_employee) + get :edit, :id => '42', :company_id => '37' + assert_equal mock_company, assigns(:company) + assert_equal mock_employee, assigns(:employee) + assert_response :success + end + + def test_expose_a_newly_create_employee_on_create + Employee.expects(:build).with({'these' => 'params'}).returns(mock_employee(:save => true)) + post :create, :company_id => '37', :employee => {:these => 'params'} + assert_equal mock_company, assigns(:company) + assert_equal mock_employee, assigns(:employee) + end + + def test_update_the_requested_object_on_update + Employee.expects(:find).with('42').returns(mock_employee) + mock_employee.expects(:update_attributes).with({'these' => 'params'}).returns(true) + put :update, :id => '42', :company_id => '37', :employee => {:these => 'params'} + assert_equal mock_company, assigns(:company) + assert_equal mock_employee, assigns(:employee) + end + + def test_the_resquested_employee_is_destroyed_on_destroy + Employee.expects(:find).with('42').returns(mock_employee) + mock_employee.expects(:destroy) + delete :destroy, :id => '42', :company_id => '37' + assert_equal mock_company, assigns(:company) + assert_equal mock_employee, assigns(:employee) + end + + def test_polymorphic_helpers + mock_company.stubs(:class).returns(Company) + + Employee.expects(:find).with(:all).returns([mock_employee]) + get :index, :company_id => '37' + + assert @controller.send(:parent?) + assert_equal :company, assigns(:parent_type) + assert_equal :company, @controller.send(:parent_type) + assert_equal Company, @controller.send(:parent_class) + assert_equal mock_company, assigns(:company) + assert_equal mock_company, @controller.send(:parent) + end + + protected + def mock_company(stubs={}) + @mock_company ||= mock(stubs) end def mock_employee(stubs={}) @mock_employee ||= mock(stubs) end