Commit c798281d5d9a2156c73e23e2c336ed4b11013cc5

Authored by Rodrigo Souto
1 parent 923d4164

Fixing route to tasks when profile has its own domain

(ActionItem2529)
app/models/profile.rb
@@ -463,6 +463,10 @@ class Profile < ActiveRecord::Base @@ -463,6 +463,10 @@ class Profile < ActiveRecord::Base
463 { :profile => identifier, :controller => 'profile_editor', :action => 'index' } 463 { :profile => identifier, :controller => 'profile_editor', :action => 'index' }
464 end 464 end
465 465
  466 + def tasks_url
  467 + { :profile => identifier, :controller => 'tasks', :action => 'index', :host => default_hostname }
  468 + end
  469 +
466 def leave_url(reload = false) 470 def leave_url(reload = false)
467 { :profile => identifier, :controller => 'profile', :action => 'leave', :reload => reload } 471 { :profile => identifier, :controller => 'profile', :action => 'leave', :reload => reload }
468 end 472 end
app/models/task_mailer.rb
@@ -14,7 +14,7 @@ class TaskMailer < ActionMailer::Base @@ -14,7 +14,7 @@ class TaskMailer < ActionMailer::Base
14 14
15 recipients task.target.notification_emails 15 recipients task.target.notification_emails
16 16
17 - url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.url.merge(:controller => 'tasks', :action => 'index')) 17 + url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.tasks_url)
18 18
19 from self.class.generate_from(task) 19 from self.class.generate_from(task)
20 subject '[%s] %s' % [task.environment.name, task.target_notification_description] 20 subject '[%s] %s' % [task.environment.name, task.target_notification_description]
test/unit/approve_article_test.rb
@@ -422,4 +422,12 @@ class ApproveArticleTest < ActiveSupport::TestCase @@ -422,4 +422,12 @@ class ApproveArticleTest < ActiveSupport::TestCase
422 assert_nil new_article.last_changed_by_id 422 assert_nil new_article.last_changed_by_id
423 end 423 end
424 424
  425 + should 'not crash if target has its own domain' do
  426 + article = fast_create(Article)
  427 + profile.domains << Domain.create(:name => 'example.org')
  428 + assert_nothing_raised do
  429 + ApproveArticle.create!(:article => article, :target => profile, :requestor => community)
  430 + end
  431 + end
  432 +
425 end 433 end
test/unit/profile_test.rb
@@ -246,6 +246,13 @@ class ProfileTest &lt; ActiveSupport::TestCase @@ -246,6 +246,13 @@ class ProfileTest &lt; ActiveSupport::TestCase
246 assert_equal({ :profile => 'testprofile', :controller => 'profile_editor', :action => 'index'}, profile.admin_url) 246 assert_equal({ :profile => 'testprofile', :controller => 'profile_editor', :action => 'index'}, profile.admin_url)
247 end 247 end
248 248
  249 + should 'provide URL to tasks area' do
  250 + environment = create_environment('mycolivre.net')
  251 + profile = build(Profile, :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id)
  252 +
  253 + assert_equal({ :host => profile.default_hostname, :profile => 'testprofile', :controller => 'tasks', :action => 'index'}, profile.tasks_url)
  254 + end
  255 +
249 should 'provide URL to public profile' do 256 should 'provide URL to public profile' do
250 environment = create_environment('mycolivre.net') 257 environment = create_environment('mycolivre.net')
251 profile = build(Profile, :identifier => 'testprofile', :environment_id => environment.id) 258 profile = build(Profile, :identifier => 'testprofile', :environment_id => environment.id)
test/unit/task_mailer_test.rb
@@ -84,22 +84,9 @@ class TaskMailerTest &lt; ActiveSupport::TestCase @@ -84,22 +84,9 @@ class TaskMailerTest &lt; ActiveSupport::TestCase
84 end 84 end
85 85
86 should 'be able to send a "target notification" message' do 86 should 'be able to send a "target notification" message' do
87 - task = Task.new 87 + task = Task.new(:target => fast_create(Person))
88 task.expects(:target_notification_description).returns('the task') 88 task.expects(:target_notification_description).returns('the task')
89 89
90 - target = mock()  
91 - target.expects(:notification_emails).returns(['target@example.com'])  
92 - target.expects(:name).returns('Target')  
93 - target.expects(:url).returns({:host => 'my.domain.com', :profile => 'testprofile'})  
94 -  
95 - environment = mock()  
96 - environment.expects(:contact_email).returns('sender@example.com')  
97 - environment.expects(:default_hostname).returns('example.com')  
98 - environment.expects(:name).returns('example').at_least_once  
99 -  
100 - task.expects(:target).returns(target).at_least_once  
101 - task.expects(:environment).returns(environment).at_least_once  
102 -  
103 TaskMailer.deliver_target_notification(task, 'the message') 90 TaskMailer.deliver_target_notification(task, 'the message')
104 assert !ActionMailer::Base.deliveries.empty? 91 assert !ActionMailer::Base.deliveries.empty?
105 end 92 end