Passed
Pull Request — master (#35)
by
unknown
03:37
created

SimpleQueueTransportTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 119
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 75
dl 0
loc 119
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 4 1
B testSendWithEmail() 0 86 3
1
<?php
2
namespace Queue\Test\TestCase\Mailer\Transport;
3
4
use Cake\Mailer\Email;
5
use Cake\TestSuite\TestCase;
6
use Queue\Mailer\Transport\SimpleQueueTransport;
7
8
/**
9
 * Test case
10
 */
11
class SimpleQueueTransportTest extends TestCase
12
{
13
14
    /**
15
     * Fixtures to load
16
     *
17
     * @var array
18
     */
19
    public $fixtures = [
20
        'plugin.Queue.QueuedTasks'
21
    ];
22
23
    /**
24
     *
25
     * @var \Queue\Mailer\Transport\SimpleQueueTransport
26
     */
27
    protected $QueueTransport;
28
29
    /**
30
     * Setup
31
     *
32
     * @return void
33
     */
34
    public function setUp()
35
    {
36
        parent::setUp();
37
        $this->QueueTransport = new SimpleQueueTransport();
38
    }
39
40
    /**
41
     *
42
     * @return void
43
     */
44
    public function testSendWithEmail()
45
    {
46
        $config = [
47
            'transport' => 'queue',
48
            'charset' => 'utf-8',
49
            'headerCharset' => 'utf-8'
50
        ];
51
52
        $this->QueueTransport->setConfig($config);
53
        $Email = new Email($config);
54
55
        $Email->setFrom('[email protected]', 'CakePHP Test');
56
        $Email->setTo('[email protected]', 'CakePHP');
57
        $Email->setCc([
58
            '[email protected]' => 'Mark Story',
59
            '[email protected]' => 'Juan Basso'
60
        ]);
61
        $Email->setBcc('[email protected]');
62
        $Email->setSubject('Testing Message');
63
        $Email->setAttachments([
64
            'wow.txt' => [
65
                'data' => 'much wow!',
66
                'mimetype' => 'text/plain',
67
                'contentId' => 'important'
68
            ]
69
        ]);
70
71
        $Email->viewBuilder()->setLayout('test_layout');
72
        $Email->viewBuilder()->setTemplate('test_template');
73
        $Email->setSubject("L'utilisateur n'a pas pu être enregistré");
74
        $Email->setReplyTo('[email protected]');
75
        $Email->setReadReceipt('[email protected]');
76
        $Email->setReturnPath('[email protected]');
77
        $Email->setDomain('cakephp.org');
78
        $Email->viewBuilder()->setTheme('EuroTheme');
79
        $Email->setEmailFormat('both');
80
        $Email->set('var1', 1);
81
        $Email->set('var2', 2);
82
83
        $result = $this->QueueTransport->send($Email);
84
        $this->assertSame('Email', $result['task']);
85
        $this->assertTrue(strlen($result['data']) < 10000);
86
87
        $output = unserialize($result['data']);
88
        $emailReconstructed = new Email($config);
89
90
        foreach ($output['settings'] as $method => $setting) {
91
            $callable = $emailReconstructed;
92
            if (in_array($method, [
93
                'theme',
94
                'template',
95
                'layout'
96
            ])) {
97
                $callable = $callable->viewBuilder();
98
            }
99
            $setter = 'set' . ucfirst($method);
100
            call_user_func_array([
101
                $callable,
102
                $setter
103
            ], (array)$setting);
104
        }
105
106
        $this->assertEquals($emailReconstructed->getFrom(), $Email->getFrom());
107
        $this->assertEquals($emailReconstructed->getTo(), $Email->getTo());
108
        $this->assertEquals($emailReconstructed->getCc(), $Email->getCc());
109
        $this->assertEquals($emailReconstructed->getBcc(), $Email->getBcc());
110
        $this->assertEquals($emailReconstructed->getSubject(), $Email->getSubject());
111
        $this->assertEquals($emailReconstructed->getCharset(), $Email->getCharset());
112
        $this->assertEquals($emailReconstructed->getHeaderCharset(), $Email->getHeaderCharset());
113
        $this->assertEquals($emailReconstructed->getEmailFormat(), $Email->getEmailFormat());
114
        $this->assertEquals($emailReconstructed->getReplyTo(), $Email->getReplyTo());
115
        $this->assertEquals($emailReconstructed->getReadReceipt(), $Email->getReadReceipt());
116
        $this->assertEquals($emailReconstructed->getReturnPath(), $Email->getReturnPath());
117
        // $this->assertEquals($emailReconstructed->getMessageId(), $Email->getMessageId());
118
        $this->assertEquals($emailReconstructed->getDomain(), $Email->getDomain());
119
        $this->assertEquals($emailReconstructed->viewBuilder()
120
            ->getTheme(), $Email->viewBuilder()
121
            ->getTheme());
122
        $this->assertEquals($emailReconstructed->getProfile(), $Email->getProfile());
123
        $this->assertEquals($emailReconstructed->getViewVars(), $Email->getViewVars());
124
        $this->assertEquals($emailReconstructed->viewBuilder()
125
            ->getTemplate(), $Email->viewBuilder()
126
            ->getTemplate());
127
        $this->assertEquals($emailReconstructed->viewBuilder()
128
            ->getLayout(), $Email->viewBuilder()
129
            ->getLayout());
130
    }
131
}
132