newsletter_plugin_moderate_newsletter_test.rb
1.95 KB
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
require 'test_helper'
class NewsletterPluginModerateNewsletterTest < ActiveSupport::TestCase
  should 'validates presence of newsletter_id' do
    task = NewsletterPlugin::ModerateNewsletter.new
    task.valid?
    assert task.errors.include?(:newsletter_id)
    task.newsletter_id = 1
    task.valid?
    refute task.errors.include?(:newsletter_id)
  end
  should 'create mailing on perform' do
    person = create_user('john').person
    newsletter = NewsletterPlugin::Newsletter.create!(:environment => fast_create(Environment), :person => person, :enabled => true)
    task = NewsletterPlugin::ModerateNewsletter.create!(
      :newsletter_id => newsletter.id,
      :target => newsletter.environment
    )
    assert_difference 'NewsletterPlugin::NewsletterMailing.count', 1 do
      task.finish
    end
  end
  should 'set posts for mailing body on perform' do
    person = create_user('john').person
    blog = fast_create(Blog, profile_id: person.id)
    post_1 = fast_create(TextileArticle, :name => 'First post', :profile_id => person.id, :parent_id => blog.id, :body => 'Test')
    post_2 = fast_create(TextileArticle, :name => 'Second post', :profile_id => person.id, :parent_id => blog.id, :body => 'Test')
    post_3 = fast_create(TextileArticle, :name => 'Third post', :profile_id => person.id, :parent_id => blog.id, :body => 'Test')
    newsletter = NewsletterPlugin::Newsletter.create!(:environment => person.environment, :person => person, :enabled => true)
    newsletter.blog_ids = [blog.id]
    newsletter.save!
    task = NewsletterPlugin::ModerateNewsletter.create!(
      :newsletter_id => newsletter.id,
      :target => newsletter.environment,
      :post_ids => [post_1.id.to_s,post_2.id.to_s]
    )
    task.finish
    assert_match /First post/, NewsletterPlugin::NewsletterMailing.last.body
    assert_match /Second post/, NewsletterPlugin::NewsletterMailing.last.body
    assert_no_match /Third post/, NewsletterPlugin::NewsletterMailing.last.body
  end
end