16
16
use Magento \Quote \Api \CartRepositoryInterface ;
17
17
use Magento \Sales \Api \Data \OrderInterfaceFactory ;
18
18
use Magento \Sales \Helper \Guest ;
19
+ use Magento \Sales \Model \Order \Email \Sender \CreditmemoSender ;
19
20
use Magento \Sales \Model \Order \Creditmemo ;
20
21
use Magento \Sales \Model \Order \Creditmemo \Item ;
21
22
use Magento \TestFramework \Mail \Template \TransportBuilderMock ;
@@ -47,19 +48,14 @@ class ReorderTest extends AbstractController
47
48
private $ quoteRepository ;
48
49
49
50
/**
50
- * @var string
51
- */
52
- private $ testMailbox ;
53
-
54
- /**
55
- * @var string
51
+ * @var TransportBuilderMock
56
52
*/
57
- private $ expectedSubject ;
53
+ private $ transportBuilder ;
58
54
59
55
/**
60
- * @var TransportBuilderMock
56
+ * @var CreditmemoSender
61
57
*/
62
- private $ transportBuilder ;
58
+ protected $ creditmemoSender ;
63
59
64
60
/**
65
61
* @inheritdoc
@@ -74,6 +70,7 @@ protected function setUp(): void
74
70
$ this ->customerSession = $ this ->_objectManager ->get (Session::class);
75
71
$ this ->quoteRepository = $ this ->_objectManager ->get (CartRepositoryInterface::class);
76
72
$ this ->transportBuilder = $ this ->_objectManager ->get (TransportBuilderMock::class);
73
+ $ this ->creditmemoSender = $ this ->_objectManager ->get (CreditmemoSender::class);
77
74
}
78
75
79
76
/**
@@ -164,12 +161,12 @@ private function dispatchReorderRequest(): void
164
161
*
165
162
* @return void
166
163
* @throws LocalizedException
164
+ * @throws \Exception
167
165
*/
168
166
public function testOrderNumberIsPresentInCreditMemoEmail (): void
169
167
{
170
168
$ orderIncrementId = 'test_order_1 ' ;
171
169
$ order = $ this ->orderFactory ->create ()->loadByIncrementId ($ orderIncrementId );
172
- $ storeId = $ order ->getStoreId ();
173
170
174
171
// Create an Invoice for the Order
175
172
$ invoice = $ order ->prepareInvoice ()->register ();
@@ -184,7 +181,8 @@ public function testOrderNumberIsPresentInCreditMemoEmail(): void
184
181
185
182
// Create a Credit Memo
186
183
$ creditmemo = $ this ->_objectManager ->create (Creditmemo::class)
187
- ->setOrder ($ order );
184
+ ->setOrder ($ order )
185
+ ->setInvoice ($ invoice );
188
186
189
187
foreach ($ order ->getAllItems () as $ orderItem ) {
190
188
$ creditmemoItem = $ this ->_objectManager ->create (Item::class)
@@ -199,20 +197,23 @@ public function testOrderNumberIsPresentInCreditMemoEmail(): void
199
197
->addObject ($ invoice ->getOrder ())
200
198
->save ();
201
199
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
-
206
200
// Send the Credit Memo email
207
201
$ creditmemo ->setEmailSent (true );
208
202
$ invoice ->setEmailSent (true );
203
+ $ this ->creditmemoSender ->send ($ creditmemo );
204
+
209
205
$ this ->_objectManager ->create (\Magento \Framework \DB \Transaction::class)
210
206
->addObject ($ invoice )
211
207
->save ();
212
208
209
+ // Verify email in the mailbox
213
210
$ message = $ this ->transportBuilder ->getSentMessage ();
211
+ $ this ->assertNotNull ($ message );
212
+ $ this ->assertEquals ('Credit memo for your Main Website Store order ' , $ message ->getSubject ());
214
213
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
+ );
217
218
}
218
219
}
0 commit comments