Commit db00f92d4377ca761993f5635faded2125255c7d

Authored by Joenio Costa
1 parent 0d65584a

ActionItem791: fix bug when state or city is blank

app/controllers/public/contact_controller.rb
... ... @@ -7,8 +7,8 @@ class ContactController < PublicController
7 7 if request.post?
8 8 @contact = Contact.new(params[:contact])
9 9 @contact.dest = profile
10   - @contact.city = City.exists?(params[:city]) ? City.find(params[:city]).name : _('Missing')
11   - @contact.state = State.exists?(params[:state]) ? State.find(params[:state]).name : _('Missing')
  10 + @contact.city = (!params[:city].blank? && City.exists?(params[:city])) ? City.find(params[:city]).name : _('Missing')
  11 + @contact.state = (!params[:state].blank? && State.exists?(params[:state])) ? State.find(params[:state]).name : _('Missing')
12 12 if @contact.deliver
13 13 flash[:notice] = _('Contact successfully sent')
14 14 redirect_to :action => 'new'
... ...
test/functional/contact_controller_test.rb
... ... @@ -64,7 +64,7 @@ class ContactControllerTest < Test::Unit::TestCase
64 64 should 'define city and state' do
65 65 City.stubs(:find).returns(City.new(:name => 'Camaçari'))
66 66 State.stubs(:find).returns(State.new(:name => 'Bahia'))
67   - post :new, :profile => enterprise.identifier, :contact => {:name => 'john', :subject => 'Hi', :email => 'visitor@mail.invalid', :message => 'Hi, all', :state => 1, :city => 1}
  67 + post :new, :profile => enterprise.identifier, :contact => {:name => 'john', :subject => 'Hi', :email => 'visitor@mail.invalid', :message => 'Hi, all'}, :state => '1', :city => '1'
68 68 assert_equal 'Camaçari', assigns(:contact).city
69 69 assert_equal 'Bahia', assigns(:contact).state
70 70 end
... ... @@ -80,4 +80,12 @@ class ContactControllerTest < Test::Unit::TestCase
80 80 assert_template 'new'
81 81 end
82 82  
  83 + should 'not throws exception when city and state is blank' do
  84 + State.expects(:exists?).with('').never
  85 + City.expects(:exists?).with('').never
  86 + assert_nothing_raised do
  87 + post :new, :profile => enterprise.identifier, :contact => {:name => 'john', :subject => 'Hi', :email => 'visitor@mail.invalid', :message => 'Hi, all', :state => '', :city => ''}
  88 + end
  89 + end
  90 +
83 91 end
... ...