Skip to content

Commit 1c7e3a1

Browse files
committed
Issues 13769. Fix wrong info about sent email in order sender.
1 parent 95626aa commit 1c7e3a1

File tree

2 files changed

+49
-19
lines changed

2 files changed

+49
-19
lines changed

app/code/Magento/Sales/Model/Order/Email/Sender.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ protected function checkAndSend(Order $order)
8484
$sender->sendCopyTo();
8585
} catch (\Exception $e) {
8686
$this->logger->error($e->getMessage());
87+
88+
return false;
8789
}
8890

8991
return true;

app/code/Magento/Sales/Test/Unit/Model/Order/Email/Sender/OrderSenderTest.php

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,11 @@ protected function setUp()
5353
* @param int $configValue
5454
* @param bool|null $forceSyncMode
5555
* @param bool|null $emailSendingResult
56-
* @dataProvider sendDataProvider
56+
* @param $senderSendException
5757
* @return void
58+
* @dataProvider sendDataProvider
5859
*/
59-
public function testSend($configValue, $forceSyncMode, $emailSendingResult)
60+
public function testSend($configValue, $forceSyncMode, $emailSendingResult, $senderSendException)
6061
{
6162
$address = 'address_test';
6263
$configPath = 'sales_email/general/async_sending';
@@ -110,19 +111,23 @@ public function testSend($configValue, $forceSyncMode, $emailSendingResult)
110111

111112
$this->senderMock->expects($this->once())->method('send');
112113

113-
$this->senderMock->expects($this->once())->method('sendCopyTo');
114+
if ($senderSendException) {
115+
$this->checkSenderSendExceptionCase();
116+
} else {
117+
$this->senderMock->expects($this->once())->method('sendCopyTo');
114118

115-
$this->orderMock->expects($this->once())
116-
->method('setEmailSent')
117-
->with(true);
119+
$this->orderMock->expects($this->once())
120+
->method('setEmailSent')
121+
->with(true);
118122

119-
$this->orderResourceMock->expects($this->once())
120-
->method('saveAttribute')
121-
->with($this->orderMock, ['send_email', 'email_sent']);
123+
$this->orderResourceMock->expects($this->once())
124+
->method('saveAttribute')
125+
->with($this->orderMock, ['send_email', 'email_sent']);
122126

123-
$this->assertTrue(
124-
$this->sender->send($this->orderMock)
125-
);
127+
$this->assertTrue(
128+
$this->sender->send($this->orderMock)
129+
);
130+
}
126131
} else {
127132
$this->orderResourceMock->expects($this->once())
128133
->method('saveAttribute')
@@ -146,19 +151,42 @@ public function testSend($configValue, $forceSyncMode, $emailSendingResult)
146151
}
147152
}
148153

154+
/**
155+
* Methods check case when method "send" in "senderMock" throw exception.
156+
*
157+
* @return void
158+
*/
159+
protected function checkSenderSendExceptionCase()
160+
{
161+
$this->senderMock->expects($this->once())
162+
->method('send')
163+
->willThrowException(new \Exception('exception'));
164+
165+
$this->orderResourceMock->expects($this->once())
166+
->method('saveAttribute')
167+
->with($this->orderMock, 'send_email');
168+
169+
$this->assertFalse(
170+
$this->sender->send($this->orderMock)
171+
);
172+
}
173+
149174
/**
150175
* @return array
151176
*/
152177
public function sendDataProvider()
153178
{
154179
return [
155-
[0, 0, true],
156-
[0, 0, true],
157-
[0, 0, false],
158-
[0, 0, false],
159-
[0, 1, true],
160-
[0, 1, true],
161-
[1, null, null, null]
180+
[0, 0, true, false],
181+
[0, 0, true, false],
182+
[0, 0, true, true],
183+
[0, 0, false, false],
184+
[0, 0, false, false],
185+
[0, 0, false, true],
186+
[0, 1, true, false],
187+
[0, 1, true, false],
188+
[0, 1, true, false],
189+
[1, null, null, false]
162190
];
163191
}
164192

0 commit comments

Comments
 (0)