require File.dirname(__FILE__) + '/../test_helper' require 'enterprise_registration_controller' # Re-raise errors caught by the controller. class EnterpriseRegistrationController; def rescue_action(e) raise e end; end class EnterpriseRegistrationControllerTest < Test::Unit::TestCase # all_fixtures:users all_fixtures def setup @controller = EnterpriseRegistrationController.new @request = ActionController::TestRequest.new @request.stubs(:ssl?).returns(true) @response = ActionController::TestResponse.new login_as 'ze' end def test_local_files_reference assert_local_files_reference end def test_valid_xhtml assert_valid_xhtml end should 'go to the first step on index' do get :index assert_response :success assert_template 'basic_information' end should 'get back to entering basic information if data is invalid' do post :index, :create_enterprise => {} assert_response :success assert_template 'basic_information' end should 'skip prompt for selection validator if approval method is admin' do env = Environment.default env.organization_approval_method = :admin env.save region = fast_create(Region) data = { :name => 'My new enterprise', :identifier => 'mynew', :region => region } create_enterprise = CreateEnterprise.new(data) post :index, :create_enterprise => data assert_template 'confirmation' end should 'skip prompt for selection validator if approval method is none' do env = Environment.default env.organization_approval_method = :none env.save region = fast_create(Region) data = { :name => 'My new enterprise', :identifier => 'mynew', :region => region } create_enterprise = CreateEnterprise.new(data) post :index, :create_enterprise => data assert_template 'creation' end should 'prompt for selecting validator if approval method is region' do env = Environment.default env.organization_approval_method = :region env.save data = { 'name' => 'My new enterprise', 'identifier' => 'mynew' } create_enterprise = CreateEnterprise.new CreateEnterprise.expects(:new).with(data).returns(create_enterprise) validator1 = mock() validator1.expects(:id).returns(1) validator1.expects(:name).returns("validator1") validator1.expects(:validation_methodology).returns("methodology1") validator1.expects(:validation_restrictions).returns("restrictions1") validator2 = mock() validator2.expects(:id).returns(2) validator2.expects(:name).returns("validator2") validator2.expects(:validation_methodology).returns("methodology2") validator2.expects(:validation_restrictions).returns("restrictions2") region = mock() region.expects(:validators).returns([validator1, validator2]).at_least_once create_enterprise.expects(:region).returns(region) # all data but validator selected create_enterprise.expects(:valid_before_selecting_target?).returns(true) create_enterprise.stubs(:valid?).returns(false) post :index, :create_enterprise => data assert_template 'select_validator' end should 'provide confirmation at the end of the process' do data = { 'name' => 'My new enterprise', 'identifier' => 'mynew' } create_enterprise = CreateEnterprise.new CreateEnterprise.expects(:new).with(data).returns(create_enterprise) # all including validator selected validator = mock() validator.stubs(:name).returns("lalala") create_enterprise.expects(:valid_before_selecting_target?).returns(true) create_enterprise.stubs(:valid?).returns(true) # validator already selected create_enterprise.expects(:save!) create_enterprise.expects(:target).returns(validator) post :index, :create_enterprise => data assert_template 'confirmation' end should 'filter html from name' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew' } assert_sanitized assigns(:create_enterprise).name end should 'filter html from address' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew', :address => 'address' } assert_sanitized assigns(:create_enterprise).address end should 'filter html from contact_phone' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew', :contact_phone => 'contact_phone' } assert_sanitized assigns(:create_enterprise).contact_phone end should 'filter html from contact_person' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew', :contact_person => 'contact_person' } assert_sanitized assigns(:create_enterprise).contact_person end should 'filter html from acronym' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew', :acronym => 'acronym' } assert_sanitized assigns(:create_enterprise).acronym end should 'filter html from legal_form' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew', :legal_form => 'legal_form' } assert_sanitized assigns(:create_enterprise).legal_form end should 'filter html from economic_activity' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew', :economic_activity => 'economic_activity' } assert_sanitized assigns(:create_enterprise).economic_activity end should 'filter html from management_information' do post :index, :create_enterprise => { 'name' => 'name', 'identifier' => 'mynew', :management_information => 'management_information' } assert_sanitized assigns(:create_enterprise).management_information end should 'load only regions with validator organizations if approval method is region' do env = Environment.default env.organization_approval_method = :region env.save reg1 = env.regions.create!(:name => 'Region with validator') reg1.validators.create!(:name => 'Validator one', :identifier => 'validator-one') reg2 = env.regions.create!(:name => 'Region without validator') get :index assert_includes assigns(:regions), [reg1.name, reg1.id] assert_tag :tag => 'option', :content => "Region with validator" assert_no_tag :tag => 'option', :content => "Region without validator" end should 'set current environment as the task target if approval method is admin' do environment = Environment.new(:name => "Another environment") environment.organization_approval_method = :admin environment.save @controller.stubs(:environment).returns(environment) get :index assert_equal assigns(:create_enterprise).target, environment end end