cirandas.net

ref: master

test/unit/user_mailer_test.rb


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
require_relative "../test_helper"

class UserMailerTest < ActiveSupport::TestCase
  FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures'
  CHARSET = "utf-8"

  def setup
    ActionMailer::Base.delivery_method = :test
    ActionMailer::Base.perform_deliveries = true
    ActionMailer::Base.deliveries = []

  end

  should 'deliver activation email notify' do
    assert_difference 'ActionMailer::Base.deliveries.size' do
      u = create_user('some-user')
      UserMailer.activation_email_notify(u).deliver
    end
  end

  should 'deliver profiles suggestions email' do
    person = create_user('some-user').person
    ProfileSuggestion.create!(:person => person, :suggestion =>
fast_create(Person))
    email = UserMailer.profiles_suggestions_email(person).deliver
    assert_match /profile\/some-user\/friends\/suggest/, email.body.to_s
  end

  should 'deliver activation code email' do
    assert_difference 'ActionMailer::Base.deliveries.size' do
      u = create_user('some-user')
      UserMailer.activation_code(u).deliver
    end
  end

  should 'deliver activation code email with template' do
    EmailTemplate.create!(:template_type => :user_activation, :name => 'template1', :subject => 'activation template subject', :body => 'activation template body', :owner => Environment.default)
    assert_difference 'ActionMailer::Base.deliveries.size' do
      u = create_user('some-user')
      UserMailer.activation_code(u).deliver
    end
    mail = ActionMailer::Base.deliveries.last
    assert_equal 'activation template subject', mail.subject.to_s
    assert_equal 'activation template body', mail.body.to_s
  end

  should 'not leak template params into activation email' do
    EmailTemplate.create!(:template_type => :user_activation, :name => 'template1', :subject => 'activation template subject', :body => 'activation template body', :owner => Environment.default)
    assert_difference 'ActionMailer::Base.deliveries.size' do
      u = create_user('some-user')
      UserMailer.activation_code(u).deliver
    end
    mail = ActionMailer::Base.deliveries.last
    assert_nil mail['template-params']
  end

  private

    def read_fixture(action)
      IO.readlines("#{FIXTURES_PATH}/mail_sender/#{action}")
    end

    def encode(subject)
      quoted_printable(subject, CHARSET)
    end

end