From c798281d5d9a2156c73e23e2c336ed4b11013cc5 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Thu, 3 Jan 2013 01:04:35 +0000 Subject: [PATCH] Fixing route to tasks when profile has its own domain --- app/models/profile.rb | 4 ++++ app/models/task_mailer.rb | 2 +- test/unit/approve_article_test.rb | 8 ++++++++ test/unit/profile_test.rb | 7 +++++++ test/unit/task_mailer_test.rb | 15 +-------------- 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/models/profile.rb b/app/models/profile.rb index 466391d..9da1c31 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -463,6 +463,10 @@ class Profile < ActiveRecord::Base { :profile => identifier, :controller => 'profile_editor', :action => 'index' } end + def tasks_url + { :profile => identifier, :controller => 'tasks', :action => 'index', :host => default_hostname } + end + def leave_url(reload = false) { :profile => identifier, :controller => 'profile', :action => 'leave', :reload => reload } end diff --git a/app/models/task_mailer.rb b/app/models/task_mailer.rb index 076adca..ba298ef 100644 --- a/app/models/task_mailer.rb +++ b/app/models/task_mailer.rb @@ -14,7 +14,7 @@ class TaskMailer < ActionMailer::Base recipients task.target.notification_emails - url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.url.merge(:controller => 'tasks', :action => 'index')) + url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.tasks_url) from self.class.generate_from(task) subject '[%s] %s' % [task.environment.name, task.target_notification_description] diff --git a/test/unit/approve_article_test.rb b/test/unit/approve_article_test.rb index 507176a..a9fa686 100644 --- a/test/unit/approve_article_test.rb +++ b/test/unit/approve_article_test.rb @@ -422,4 +422,12 @@ class ApproveArticleTest < ActiveSupport::TestCase assert_nil new_article.last_changed_by_id end + should 'not crash if target has its own domain' do + article = fast_create(Article) + profile.domains << Domain.create(:name => 'example.org') + assert_nothing_raised do + ApproveArticle.create!(:article => article, :target => profile, :requestor => community) + end + end + end diff --git a/test/unit/profile_test.rb b/test/unit/profile_test.rb index bff378d..9c4dcca 100644 --- a/test/unit/profile_test.rb +++ b/test/unit/profile_test.rb @@ -246,6 +246,13 @@ class ProfileTest < ActiveSupport::TestCase assert_equal({ :profile => 'testprofile', :controller => 'profile_editor', :action => 'index'}, profile.admin_url) end + should 'provide URL to tasks area' do + environment = create_environment('mycolivre.net') + profile = build(Profile, :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id) + + assert_equal({ :host => profile.default_hostname, :profile => 'testprofile', :controller => 'tasks', :action => 'index'}, profile.tasks_url) + end + should 'provide URL to public profile' do environment = create_environment('mycolivre.net') profile = build(Profile, :identifier => 'testprofile', :environment_id => environment.id) diff --git a/test/unit/task_mailer_test.rb b/test/unit/task_mailer_test.rb index a6ecbcf..a7f2a3a 100644 --- a/test/unit/task_mailer_test.rb +++ b/test/unit/task_mailer_test.rb @@ -84,22 +84,9 @@ class TaskMailerTest < ActiveSupport::TestCase end should 'be able to send a "target notification" message' do - task = Task.new + task = Task.new(:target => fast_create(Person)) task.expects(:target_notification_description).returns('the task') - target = mock() - target.expects(:notification_emails).returns(['target@example.com']) - target.expects(:name).returns('Target') - target.expects(:url).returns({:host => 'my.domain.com', :profile => 'testprofile'}) - - environment = mock() - environment.expects(:contact_email).returns('sender@example.com') - environment.expects(:default_hostname).returns('example.com') - environment.expects(:name).returns('example').at_least_once - - task.expects(:target).returns(target).at_least_once - task.expects(:environment).returns(environment).at_least_once - TaskMailer.deliver_target_notification(task, 'the message') assert !ActionMailer::Base.deliveries.empty? end -- libgit2 0.21.2