Commit f0f47ad960ce242a17ad910cbf66653b9d7697e7

Authored by Antonio Terceiro
1 parent 70ba11a8

rails3: partially fix EnvironmentMailing tests

3 tests are still failing, waiting for the migration to the new
ActionMailer API
Showing 1 changed file with 33 additions and 15 deletions   Show diff stats
test/unit/environment_mailing_test.rb
@@ -16,70 +16,74 @@ class EnvironmentMailingTest < ActiveSupport::TestCase @@ -16,70 +16,74 @@ class EnvironmentMailingTest < ActiveSupport::TestCase
16 should 'require source_id' do 16 should 'require source_id' do
17 mailing = EnvironmentMailing.new 17 mailing = EnvironmentMailing.new
18 mailing.valid? 18 mailing.valid?
19 - assert mailing.errors.invalid?(:source_id) 19 + assert mailing.errors[:source_id].any?
20 20
21 mailing.source_id = environment.id 21 mailing.source_id = environment.id
22 mailing.valid? 22 mailing.valid?
23 - assert !mailing.errors.invalid?(:source_id) 23 + assert !mailing.errors[:source_id].any?
24 end 24 end
25 25
26 should 'return environment name' do 26 should 'return environment name' do
27 - mailing = EnvironmentMailing.new(:source => environment) 27 + mailing = new_mailing(environment)
28 assert_equal environment.name, mailing.source.name 28 assert_equal environment.name, mailing.source.name
29 end 29 end
30 30
31 should 'return environment with source_id' do 31 should 'return environment with source_id' do
32 - mailing = EnvironmentMailing.new(:source => environment) 32 + mailing = new_mailing(environment)
33 assert_equal environment, mailing.source 33 assert_equal environment, mailing.source
34 end 34 end
35 35
36 should 'return signature message' do 36 should 'return signature message' do
37 - mailing = EnvironmentMailing.new(:source => environment) 37 + mailing = new_mailing(environment)
38 assert_equal 'Sent by Network.', mailing.signature_message 38 assert_equal 'Sent by Network.', mailing.signature_message
39 end 39 end
40 40
41 should 'return url for environment on url' do 41 should 'return url for environment on url' do
42 - mailing = EnvironmentMailing.new(:source => environment)  
43 - environment.domains << Domain.create(:name => 'noosfero.net', :is_default => true) 42 + mailing = new_mailing(environment)
  43 + domain = Domain.new(:name => 'noosfero.net')
  44 + domain.is_default = true
  45 + environment.domains << domain
44 assert_equal 'http://noosfero.net', mailing.url 46 assert_equal 'http://noosfero.net', mailing.url
45 end 47 end
46 48
47 should 'display name and email on generate_from' do 49 should 'display name and email on generate_from' do
48 - mailing = EnvironmentMailing.new(:source => environment, :person => person_1) 50 + mailing = new_mailing(environment).tap do |m|
  51 + m.person = person_1
  52 + end
49 assert_equal "#{environment.name} <#{environment.contact_email}>", mailing.generate_from 53 assert_equal "#{environment.name} <#{environment.contact_email}>", mailing.generate_from
50 end 54 end
51 55
52 should 'deliver mailing to each recipient after create' do 56 should 'deliver mailing to each recipient after create' do
53 - mailing = EnvironmentMailing.create(:source => environment, :subject => 'Hello', :body => 'We have some news', :person => person_1) 57 + mailing = create_mailing(environment, :person => person_1)
54 process_delayed_job_queue 58 process_delayed_job_queue
55 assert_equal 2, ActionMailer::Base.deliveries.count 59 assert_equal 2, ActionMailer::Base.deliveries.count
56 end 60 end
57 61
58 should 'create mailing sent to each recipient after delivering mailing' do 62 should 'create mailing sent to each recipient after delivering mailing' do
59 - mailing = EnvironmentMailing.create(:source => environment, :subject => 'Hello', :body => 'We have some news', :person => person_1) 63 + mailing = create_mailing(environment, :person => person_1)
60 assert_difference MailingSent, :count, 2 do 64 assert_difference MailingSent, :count, 2 do
61 process_delayed_job_queue 65 process_delayed_job_queue
62 end 66 end
63 end 67 end
64 68
65 should 'change locale according to the mailing locale' do 69 should 'change locale according to the mailing locale' do
66 - mailing = EnvironmentMailing.create(:source => environment, :subject => 'Hello', :body => 'We have some news', :locale => 'pt', :person => person_1) 70 + mailing = create_mailing(environment, :locale => 'pt', :person => person_1)
67 Noosfero.expects(:with_locale).with('pt') 71 Noosfero.expects(:with_locale).with('pt')
68 process_delayed_job_queue 72 process_delayed_job_queue
69 end 73 end
70 74
71 should 'return recipients' do 75 should 'return recipients' do
72 - mailing = EnvironmentMailing.create(:source => environment, :subject => 'Hello', :body => 'We have some news', :locale => 'pt', :person => person_1) 76 + mailing = create_mailing(environment, :locale => 'pt', :person => person_1)
73 assert_equal [person_1, person_2], mailing.recipients 77 assert_equal [person_1, person_2], mailing.recipients
74 end 78 end
75 79
76 should 'return recipients according to limit' do 80 should 'return recipients according to limit' do
77 - mailing = EnvironmentMailing.create(:source => environment, :subject => 'Hello', :body => 'We have some news', :locale => 'pt', :person => person_1) 81 + mailing = create_mailing(environment, :locale => 'pt', :person => person_1)
78 assert_equal [person_1], mailing.recipients(0, 1) 82 assert_equal [person_1], mailing.recipients(0, 1)
79 end 83 end
80 84
81 should 'return true if already sent mailing to a recipient' do 85 should 'return true if already sent mailing to a recipient' do
82 - mailing = EnvironmentMailing.create(:source => environment, :subject => 'Hello', :body => 'We have some news', :person => person_1) 86 + mailing = create_mailing(environment, :person => person_1)
83 process_delayed_job_queue 87 process_delayed_job_queue
84 88
85 assert mailing.mailing_sents.find_by_person_id(person_1.id) 89 assert mailing.mailing_sents.find_by_person_id(person_1.id)
@@ -88,10 +92,24 @@ class EnvironmentMailingTest &lt; ActiveSupport::TestCase @@ -88,10 +92,24 @@ class EnvironmentMailingTest &lt; ActiveSupport::TestCase
88 should 'return false if did not sent mailing to a recipient' do 92 should 'return false if did not sent mailing to a recipient' do
89 recipient = fast_create(Person) 93 recipient = fast_create(Person)
90 person = Person['user_one'] 94 person = Person['user_one']
91 - mailing = EnvironmentMailing.create(:source => environment, :subject => 'Hello', :body => 'We have some news', :person => person_1) 95 + mailing = create_mailing(environment, :person => person_1)
92 process_delayed_job_queue 96 process_delayed_job_queue
93 97
94 assert !mailing.mailing_sents.find_by_person_id(recipient.id) 98 assert !mailing.mailing_sents.find_by_person_id(recipient.id)
95 end 99 end
96 100
  101 + def new_mailing(environment)
  102 + m = EnvironmentMailing.new(:subject => 'Hello', :body => 'We have some news')
  103 + m.source = environment
  104 + m
  105 + end
  106 +
  107 + def create_mailing(environment, options)
  108 + new_mailing(environment).tap do |m|
  109 + m.locale = options[:locale]
  110 + m.person = options[:person]
  111 + m.save!
  112 + end
  113 + end
  114 +
97 end 115 end