Skip to content

Commit d2d353b

Browse files
committed
Merge pull request #94 from Graziel/patch-4
add checks to empty values
2 parents d740b30 + 7d404be commit d2d353b

File tree

2 files changed

+58
-5
lines changed

2 files changed

+58
-5
lines changed

src/Mailer/Transport/SimpleQueueTransport.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ public function send(Email $email) {
4949
'template' => $email->template(), //template() gives 2 values - template and layout
5050
'viewVars' => [$email->viewVars()]
5151
];
52+
53+
foreach ($settings as $setting => $value) {
54+
if (array_key_exists(0, $value) && ($value[0] === null || $value[0] === [])) {
55+
unset($settings[$setting]);
56+
}
57+
}
5258

5359
$QueuedTasks = TableRegistry::get('Queue.QueuedTasks');
5460
$result = $QueuedTasks->createJob('Email', ['settings' => $settings]);

tests/TestCase/Mailer/Transport/SimpleQueueTransportTest.php

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,70 @@ public function testConfig() {
5454
* @return void
5555
*/
5656
public function testSendWithEmail() {
57-
$Email = new Email();
57+
$config = [
58+
'transport' => 'queue',
59+
'charset' => 'utf-8',
60+
'headerCharset' => 'utf-8',
61+
];
62+
63+
$this->QueueTransport->config($config);
64+
$Email = new Email($config);
65+
5866
$Email->from('[email protected]', 'CakePHP Test');
5967
$Email->to('[email protected]', 'CakePHP');
6068
$Email->cc(['[email protected]' => 'Mark Story', '[email protected]' => 'Juan Basso']);
6169
$Email->bcc('[email protected]');
6270
$Email->subject('Testing Message');
63-
$Email->transport('queue');
64-
$config = $Email->config('default');
65-
$this->QueueTransport->config($config);
71+
$Email->attachments(['wow.txt' => [
72+
'data' => 'much wow!',
73+
'mimetype' => 'text/plain',
74+
'contentId' => 'important'
75+
]]);
76+
77+
$Email->template('test_template', 'test_layout');
78+
$Email->subject('Testing Message');
79+
$Email->replyTo('[email protected]');
80+
$Email->readReceipt('[email protected]');
81+
$Email->returnPath('[email protected]');
82+
$Email->domain('cakephp.org');
83+
$Email->theme('EuroTheme');
84+
$Email->emailFormat('both');
85+
$Email->set('var1', 1);
86+
$Email->set('var2', 2);
6687

6788
$result = $this->QueueTransport->send($Email);
6889
$this->assertEquals('Email', $result['jobtype']);
6990
$this->assertTrue(strlen($result['data']) < 10000);
7091

7192
$output = unserialize($result['data']);
93+
$emailReconstructed = new Email($config);
94+
95+
foreach ($output['settings'] as $method => $setting) {
96+
call_user_func_array([$emailReconstructed, $method], (array)$setting);
97+
}
98+
99+
$this->assertEquals($emailReconstructed->from(), $Email->from());
100+
$this->assertEquals($emailReconstructed->to(), $Email->to());
101+
$this->assertEquals($emailReconstructed->cc(), $Email->cc());
102+
$this->assertEquals($emailReconstructed->bcc(), $Email->bcc());
103+
$this->assertEquals($emailReconstructed->subject(), $Email->subject());
104+
$this->assertEquals($emailReconstructed->charset(), $Email->charset());
105+
$this->assertEquals($emailReconstructed->headerCharset(), $Email->headerCharset());
106+
$this->assertEquals($emailReconstructed->emailFormat(), $Email->emailFormat());
107+
$this->assertEquals($emailReconstructed->replyTo(), $Email->replyTo());
108+
$this->assertEquals($emailReconstructed->readReceipt(), $Email->readReceipt());
109+
$this->assertEquals($emailReconstructed->returnPath(), $Email->returnPath());
110+
$this->assertEquals($emailReconstructed->messageId(), $Email->messageId());
111+
$this->assertEquals($emailReconstructed->domain(), $Email->domain());
112+
$this->assertEquals($emailReconstructed->theme(), $Email->theme());
113+
$this->assertEquals($emailReconstructed->profile(), $Email->profile());
114+
$this->assertEquals($emailReconstructed->viewVars(),$Email->viewVars());
115+
$this->assertEquals($emailReconstructed->template(),$Email->template());
116+
117+
//for now cannot be done 'data' is base64_encode on set but not decoded when get from $email
118+
//$this->assertEquals($emailReconstructed->attachments(),$Email->attachments());
119+
72120
//debug($output);
73121
//$this->assertEquals($Email, $output['settings']);
74122
}
75-
76123
}

0 commit comments

Comments
 (0)