Commit f661d43a20539d1db6c81b1c01aedd87f2edaeec

Authored by Antonio Terceiro
1 parent 0b8c2b19

ActionItem836: not asking for target when coming with target_id as argument

app/controllers/my_profile/tasks_controller.rb
... ... @@ -23,9 +23,10 @@ class TasksController < MyProfileController
23 23 end
24 24  
25 25 def new
26   - target = profile.friends.find_by_id(params[:ticket][:target_id]) if params[:ticket]
27 26 @ticket = Ticket.new(params[:ticket])
28   - @ticket.target = target
  27 + if params[:target_id]
  28 + @ticket.target = profile.friends.find(params[:target_id])
  29 + end
29 30 @ticket.requestor = profile
30 31 if request.post?
31 32 if @ticket.save
... ...
app/views/tasks/new.rhtml
... ... @@ -2,7 +2,11 @@
2 2  
3 3 <%# FIXME: put style in css %>
4 4 <% labelled_form_for :ticket, @ticket do |f| %>
5   - <%= display_form_field( _('To: '), f.select(:target_id, profile.friends.map{|p|[p.name, p.id]})) unless @ticket.target %>
  5 + <% if @ticket.target %>
  6 + <%= f.hidden_field :target_id %>
  7 + <% else %>
  8 + <%= display_form_field( _('To: '), f.select(:target_id, profile.friends.map{|p|[p.name, p.id]})) %>
  9 + <% end %>
6 10 <%= f.text_field :title, :style => 'width:80%;' %>
7 11 <%= f.text_area :description, :style => 'height:200px; width:80%;' %>
8 12  
... ...
test/functional/tasks_controller_test.rb
... ... @@ -110,6 +110,20 @@ class TasksControllerTest &lt; Test::Unit::TestCase
110 110 assert_template 'new'
111 111 end
112 112  
  113 + should 'add a hidden field with target_id when informed in the URL' do
  114 + friend = create_user('myfriend').person
  115 + profile.add_friend(friend)
  116 +
  117 + get :new, :profile => profile.identifier, :target_id => friend.id.to_s
  118 +
  119 + assert_tag :tag => 'input', :attributes => { :type => 'hidden', :name => 'ticket[target_id]', :value => friend.id }
  120 + end
  121 +
  122 + should 'select friend from list when not already informed' do
  123 + get :new, :profile => profile.identifier
  124 + assert_tag :tag => 'select', :attributes => { :name => 'ticket[target_id]' }
  125 + end
  126 +
113 127 should 'create a ticket' do
114 128 assert_difference Ticket, :count do
115 129 post :new, :profile => profile.identifier, :ticket => {:title => 'test ticket'}
... ...