1616use Magento \Quote \Api \CartRepositoryInterface ;
1717use Magento \Sales \Api \Data \OrderInterfaceFactory ;
1818use Magento \Sales \Helper \Guest ;
19+ use Magento \Sales \Model \Order \Email \Sender \CreditmemoSender ;
1920use Magento \Sales \Model \Order \Creditmemo ;
2021use Magento \Sales \Model \Order \Creditmemo \Item ;
2122use Magento \TestFramework \Mail \Template \TransportBuilderMock ;
@@ -47,19 +48,14 @@ class ReorderTest extends AbstractController
4748 private $ quoteRepository ;
4849
4950 /**
50- * @var string
51- */
52- private $ testMailbox ;
53-
54- /**
55- * @var string
51+ * @var TransportBuilderMock
5652 */
57- private $ expectedSubject ;
53+ private $ transportBuilder ;
5854
5955 /**
60- * @var TransportBuilderMock
56+ * @var CreditmemoSender
6157 */
62- private $ transportBuilder ;
58+ protected $ creditmemoSender ;
6359
6460 /**
6561 * @inheritdoc
@@ -74,6 +70,7 @@ protected function setUp(): void
7470 $ this ->customerSession = $ this ->_objectManager ->get (Session::class);
7571 $ this ->quoteRepository = $ this ->_objectManager ->get (CartRepositoryInterface::class);
7672 $ this ->transportBuilder = $ this ->_objectManager ->get (TransportBuilderMock::class);
73+ $ this ->creditmemoSender = $ this ->_objectManager ->get (CreditmemoSender::class);
7774 }
7875
7976 /**
@@ -164,12 +161,12 @@ private function dispatchReorderRequest(): void
164161 *
165162 * @return void
166163 * @throws LocalizedException
164+ * @throws \Exception
167165 */
168166 public function testOrderNumberIsPresentInCreditMemoEmail (): void
169167 {
170168 $ orderIncrementId = 'test_order_1 ' ;
171169 $ order = $ this ->orderFactory ->create ()->loadByIncrementId ($ orderIncrementId );
172- $ storeId = $ order ->getStoreId ();
173170
174171 // Create an Invoice for the Order
175172 $ invoice = $ order ->prepareInvoice ()->register ();
@@ -184,7 +181,8 @@ public function testOrderNumberIsPresentInCreditMemoEmail(): void
184181
185182 // Create a Credit Memo
186183 $ creditmemo = $ this ->_objectManager ->create (Creditmemo::class)
187- ->setOrder ($ order );
184+ ->setOrder ($ order )
185+ ->setInvoice ($ invoice );
188186
189187 foreach ($ order ->getAllItems () as $ orderItem ) {
190188 $ creditmemoItem = $ this ->_objectManager ->create (Item::class)
@@ -199,20 +197,23 @@ public function testOrderNumberIsPresentInCreditMemoEmail(): void
199197 ->addObject ($ invoice ->getOrder ())
200198 ->save ();
201199
202- // Set the test mailbox and expected email subject
203- $ this ->testMailbox = 'test@example.com ' ;
204- $ this ->expectedSubject = 'Credit memo for your Main Website Store order ' ;
205-
206200 // Send the Credit Memo email
207201 $ creditmemo ->setEmailSent (true );
208202 $ invoice ->setEmailSent (true );
203+ $ this ->creditmemoSender ->send ($ creditmemo );
204+
209205 $ this ->_objectManager ->create (\Magento \Framework \DB \Transaction::class)
210206 ->addObject ($ invoice )
211207 ->save ();
212208
209+ // Verify email in the mailbox
213210 $ message = $ this ->transportBuilder ->getSentMessage ();
211+ $ this ->assertNotNull ($ message );
212+ $ this ->assertEquals ('Credit memo for your Main Website Store order ' , $ message ->getSubject ());
214213
215- // Verify email in the mailbox
216- $ this ->assertEquals ($ this ->expectedSubject , $ message ->getSubject ());
214+ $ this ->assertStringContainsString (
215+ 'Your Credit Memo # for Order # ' . $ orderIncrementId ,
216+ $ message ->getBody ()->getParts ()[0 ]->getRawContent ()
217+ );
217218 }
218219}
0 commit comments