Skip to content

Commit 8503abe

Browse files
committed
ACP2E-1063: received duplicate emails after created an order from admin
1 parent 1bc1794 commit 8503abe

File tree

1 file changed

+39
-3
lines changed
  • dev/tests/integration/testsuite/Magento/Sales/Model/AdminOrder

1 file changed

+39
-3
lines changed

dev/tests/integration/testsuite/Magento/Sales/Model/AdminOrder/CreateTest.php

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
use Magento\Sales\Api\Data\OrderAddressExtensionInterfaceFactory;
1818
use Magento\Sales\Api\OrderManagementInterface;
1919
use Magento\Sales\Model\Order;
20+
use Magento\Sales\Model\AdminOrder\EmailSender;
2021
use Magento\TestFramework\Helper\Bootstrap;
2122
use Magento\TestFramework\ObjectManager;
23+
use PHPUnit\Framework\MockObject\MockObject;
2224

2325
/**
2426
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -37,6 +39,11 @@ class CreateTest extends \PHPUnit\Framework\TestCase
3739
*/
3840
private $messageManager;
3941

42+
/**
43+
* @var EmailSender|MockObject
44+
*/
45+
private $emailSenderMock;
46+
4047
/**
4148
* @var ObjectManager
4249
*/
@@ -46,7 +53,13 @@ protected function setUp(): void
4653
{
4754
$this->objectManager = Bootstrap::getObjectManager();
4855
$this->messageManager = $this->objectManager->get(ManagerInterface::class);
49-
$this->model =$this->objectManager->create(Create::class, ['messageManager' => $this->messageManager]);
56+
$this->emailSenderMock = $this->getMockBuilder(EmailSender::class)
57+
->disableOriginalConstructor()
58+
->getMock();
59+
$this->model =$this->objectManager->create(
60+
Create::class,
61+
['messageManager' => $this->messageManager, 'emailSender' => $this->emailSenderMock]
62+
);
5063
}
5164

5265
/**
@@ -599,8 +612,11 @@ public function testCreateOrderExistingCustomerDifferentAddresses()
599612
* @magentoDataFixture Magento/Customer/_files/customer.php
600613
* @magentoDbIsolation disabled
601614
* @magentoAppIsolation enabled
615+
* @dataProvider emailCheckProvider
616+
* @param bool $sendConfirmation
617+
* @param bool $emailSent
602618
*/
603-
public function testCreateOrderExistingCustomer()
619+
public function testCreateOrderExistingCustomer($sendConfirmation, $emailSent)
604620
{
605621
$productIdFromFixture = 1;
606622
$customerIdFromFixture = 1;
@@ -613,7 +629,7 @@ public function testCreateOrderExistingCustomer()
613629
'billing_address' => array_merge($this->getValidAddressData(), ['save_in_address_book' => '1']),
614630
'shipping_method' => $shippingMethod,
615631
'comment' => ['customer_note' => ''],
616-
'send_confirmation' => false,
632+
'send_confirmation' => $sendConfirmation,
617633
];
618634
$paymentData = ['method' => $paymentMethod];
619635

@@ -628,12 +644,32 @@ public function testCreateOrderExistingCustomer()
628644
$customerIdFromFixture
629645
);
630646
$customerMock = $this->getMockedCustomer();
647+
if ($customerIdFromFixture && !$emailSent) {
648+
$this->emailSenderMock->expects($this->once())
649+
->method('send')
650+
->willReturn(true);
651+
} else {
652+
$this->emailSenderMock->expects($this->never())->method('send');
653+
}
631654

632655
$this->model->getQuote()->setCustomer($customerMock);
633656
$order = $this->model->createOrder();
634657
$this->verifyCreatedOrder($order, $shippingMethod);
635658
}
636659

660+
/**
661+
* Data provider for testApplySelectionOnTargetProvider.
662+
*
663+
* @return array
664+
*/
665+
public function emailCheckProvider(): array
666+
{
667+
return [
668+
[false, true],
669+
[true, false]
670+
];
671+
}
672+
637673
/**
638674
* @magentoDataFixture Magento/Sales/_files/quote.php
639675
* @magentoDataFixture Magento/Customer/_files/customer.php

0 commit comments

Comments
 (0)