Completed
Push — master ( 4a6357...521c8c )
by Franco
17s queued 12s
created

ContentReviewNotificationTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 5
dl 0
loc 60
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 10 2
B testContentReviewEmails() 0 30 1
1
<?php
2
3
namespace SilverStripe\ContentReview\Tests;
4
5
use Page;
6
use SilverStripe\CMS\Model\SiteTree;
7
use SilverStripe\CMS\Controllers\CMSPageEditController;
8
use SilverStripe\ContentReview\Extensions\ContentReviewCMSExtension;
9
use SilverStripe\ContentReview\Extensions\ContentReviewDefaultSettings;
10
use SilverStripe\ContentReview\Extensions\ContentReviewOwner;
11
use SilverStripe\ContentReview\Extensions\SiteTreeContentReview;
12
use SilverStripe\ContentReview\Tasks\ContentReviewEmails;
13
use SilverStripe\Control\HTTPRequest;
14
use SilverStripe\Dev\SapphireTest;
15
use SilverStripe\ORM\FieldType\DBDatetime;
16
use SilverStripe\Security\Group;
17
use SilverStripe\Security\Member;
18
use SilverStripe\SiteConfig\SiteConfig;
19
20
/**
21
 * @mixin PHPUnit_Framework_TestCase
22
 */
23
class ContentReviewNotificationTest extends SapphireTest
24
{
25
    /**
26
     * @var string
27
     */
28
    protected static $fixture_file = 'ContentReviewTest.yml';
29
30
    protected function setUp()
31
    {
32
        parent::setUp();
33
34
        // Hack to ensure only desired siteconfig is scaffolded
35
        $desiredID = $this->idFromFixture(SiteConfig::class, 'mysiteconfig');
36
        foreach (SiteConfig::get()->exclude('ID', $desiredID) as $config) {
37
            $config->delete();
38
        }
39
    }
40
41
    /**
42
     * @var array
43
     */
44
    protected static $required_extensions = [
45
        SiteTree::class => [SiteTreeContentReview::class],
46
        Group::class => [ContentReviewOwner::class],
47
        Member::class => [ContentReviewOwner::class],
48
        CMSPageEditController::class => [ContentReviewCMSExtension::class],
49
        SiteConfig::class => [ContentReviewDefaultSettings::class],
50
    ];
51
52
    public function testContentReviewEmails()
53
    {
54
        DBDatetime::set_mock_now('2010-02-24 12:00:00');
55
56
        /** @var Page|SiteTreeContentReview $childParentPage */
57
        $childParentPage = $this->objFromFixture(Page::class, 'contact');
58
        $childParentPage->NextReviewDate = '2010-02-23';
59
        $childParentPage->write();
60
61
        $task = new ContentReviewEmails();
62
        $task->run(new HTTPRequest('GET', '/dev/tasks/ContentReviewEmails'));
63
64
        // Set template variables (as per variable case)
65
        $ToEmail = '[email protected]';
66
        $Subject = 'Please log in to review some content!';
67
        $PagesCount = 3;
68
        $ToFirstName = 'Test';
69
70
        $email = $this->findEmail($ToEmail, null, $Subject);
71
        $this->assertNotNull($email, "Email haven't been sent.");
72
        $this->assertContains(
73
            "<h1>$Subject</h1><p>There are $PagesCount pages that are due for review today by you, $ToFirstName.</p><p>This email was sent to $ToEmail</p>",
74
            $email['HtmlContent']
75
        );
76
        $this->assertContains('Staff', $email['HtmlContent']);
77
        $this->assertContains('Contact Us', $email['HtmlContent']);
78
        $this->assertContains('Contact Us Child', $email['HtmlContent']);
79
80
        DBDatetime::clear_mock_now();
81
    }
82
}
83