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 16 should 'require source_id' do
17 17 mailing = EnvironmentMailing.new
18 18 mailing.valid?
19   - assert mailing.errors.invalid?(:source_id)
  19 + assert mailing.errors[:source_id].any?
20 20  
21 21 mailing.source_id = environment.id
22 22 mailing.valid?
23   - assert !mailing.errors.invalid?(:source_id)
  23 + assert !mailing.errors[:source_id].any?
24 24 end
25 25  
26 26 should 'return environment name' do
27   - mailing = EnvironmentMailing.new(:source => environment)
  27 + mailing = new_mailing(environment)
28 28 assert_equal environment.name, mailing.source.name
29 29 end
30 30  
31 31 should 'return environment with source_id' do
32   - mailing = EnvironmentMailing.new(:source => environment)
  32 + mailing = new_mailing(environment)
33 33 assert_equal environment, mailing.source
34 34 end
35 35  
36 36 should 'return signature message' do
37   - mailing = EnvironmentMailing.new(:source => environment)
  37 + mailing = new_mailing(environment)
38 38 assert_equal 'Sent by Network.', mailing.signature_message
39 39 end
40 40  
41 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 46 assert_equal 'http://noosfero.net', mailing.url
45 47 end
46 48  
47 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 53 assert_equal "#{environment.name} <#{environment.contact_email}>", mailing.generate_from
50 54 end
51 55  
52 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 58 process_delayed_job_queue
55 59 assert_equal 2, ActionMailer::Base.deliveries.count
56 60 end
57 61  
58 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 64 assert_difference MailingSent, :count, 2 do
61 65 process_delayed_job_queue
62 66 end
63 67 end
64 68  
65 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 71 Noosfero.expects(:with_locale).with('pt')
68 72 process_delayed_job_queue
69 73 end
70 74  
71 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 77 assert_equal [person_1, person_2], mailing.recipients
74 78 end
75 79  
76 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 82 assert_equal [person_1], mailing.recipients(0, 1)
79 83 end
80 84  
81 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 87 process_delayed_job_queue
84 88  
85 89 assert mailing.mailing_sents.find_by_person_id(person_1.id)
... ... @@ -88,10 +92,24 @@ class EnvironmentMailingTest &lt; ActiveSupport::TestCase
88 92 should 'return false if did not sent mailing to a recipient' do
89 93 recipient = fast_create(Person)
90 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 96 process_delayed_job_queue
93 97  
94 98 assert !mailing.mailing_sents.find_by_person_id(recipient.id)
95 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 115 end
... ...