1717use Magento \Sales \Api \Data \OrderAddressExtensionInterfaceFactory ;
1818use Magento \Sales \Api \OrderManagementInterface ;
1919use Magento \Sales \Model \Order ;
20+ use Magento \Sales \Model \AdminOrder \EmailSender ;
2021use Magento \TestFramework \Helper \Bootstrap ;
2122use 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