Skip to content

Commit caf7210

Browse files
ManjushaManjusha
authored andcommitted
Merge branch 'ACQE-5215' into functional-mainline-deployment
2 parents cacfcd4 + 084167d commit caf7210

File tree

1 file changed

+81
-0
lines changed
  • dev/tests/integration/testsuite/Magento/Sales/Controller/Guest

1 file changed

+81
-0
lines changed

dev/tests/integration/testsuite/Magento/Sales/Controller/Guest/ReorderTest.php

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,25 @@
99

1010
use Magento\Checkout\Model\Session as CheckoutSession;
1111
use Magento\Customer\Model\Session;
12+
use Magento\Framework\Exception\LocalizedException;
1213
use Magento\Framework\Exception\NoSuchEntityException;
1314
use Magento\Framework\Message\MessageInterface;
1415
use Magento\Framework\Stdlib\CookieManagerInterface;
1516
use Magento\Quote\Api\CartRepositoryInterface;
1617
use Magento\Sales\Api\Data\OrderInterfaceFactory;
1718
use Magento\Sales\Helper\Guest;
19+
use Magento\Sales\Model\Order\Email\Sender\CreditmemoSender;
20+
use Magento\Sales\Model\Order\Creditmemo;
21+
use Magento\Sales\Model\Order\Creditmemo\Item;
22+
use Magento\TestFramework\Mail\Template\TransportBuilderMock;
1823
use Magento\TestFramework\Request;
1924
use Magento\TestFramework\TestCase\AbstractController;
2025

2126
/**
2227
* Test for guest reorder controller.
2328
*
2429
* @see \Magento\Sales\Controller\Guest\Reorder
30+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
2531
* @magentoAppArea frontend
2632
* @magentoDbIsolation enabled
2733
*/
@@ -42,6 +48,16 @@ class ReorderTest extends AbstractController
4248
/** @var CartRepositoryInterface */
4349
private $quoteRepository;
4450

51+
/**
52+
* @var TransportBuilderMock
53+
*/
54+
private $transportBuilder;
55+
56+
/**
57+
* @var CreditmemoSender
58+
*/
59+
protected $creditmemoSender;
60+
4561
/**
4662
* @inheritdoc
4763
*/
@@ -54,6 +70,8 @@ protected function setUp(): void
5470
$this->cookieManager = $this->_objectManager->get(CookieManagerInterface::class);
5571
$this->customerSession = $this->_objectManager->get(Session::class);
5672
$this->quoteRepository = $this->_objectManager->get(CartRepositoryInterface::class);
73+
$this->transportBuilder = $this->_objectManager->get(TransportBuilderMock::class);
74+
$this->creditmemoSender = $this->_objectManager->get(CreditmemoSender::class);
5775
}
5876

5977
/**
@@ -136,4 +154,67 @@ private function dispatchReorderRequest(): void
136154
$this->getRequest()->setMethod(Request::METHOD_POST);
137155
$this->dispatch('sales/guest/reorder/');
138156
}
157+
158+
/**
159+
* @magentoDbIsolation disabled
160+
*
161+
* @magentoDataFixture Magento/Sales/_files/order_by_guest_with_simple_product.php
162+
*
163+
* @return void
164+
* @throws LocalizedException
165+
* @throws \Exception
166+
*/
167+
public function testOrderNumberIsPresentInCreditMemoEmail(): void
168+
{
169+
$orderIncrementId = 'test_order_1';
170+
$order = $this->orderFactory->create()->loadByIncrementId($orderIncrementId);
171+
172+
// Create an Invoice for the Order
173+
$invoice = $order->prepareInvoice()->register();
174+
$invoice->pay();
175+
176+
// Submit the Invoice
177+
$invoice->getOrder()->setIsInProcess(true);
178+
$this->_objectManager->create(\Magento\Framework\DB\Transaction::class)
179+
->addObject($invoice)
180+
->addObject($invoice->getOrder())
181+
->save();
182+
183+
// Create a Credit Memo
184+
$creditmemo = $this->_objectManager->create(Creditmemo::class)
185+
->setOrder($order)
186+
->setInvoice($invoice);
187+
188+
foreach ($order->getAllItems() as $orderItem) {
189+
$creditmemoItem = $this->_objectManager->create(Item::class)
190+
->setOrderItem($orderItem)
191+
->setQty($orderItem->getQtyOrdered())
192+
->setBackToStock(true);
193+
$creditmemo->addItem($creditmemoItem);
194+
}
195+
196+
$this->_objectManager->create(\Magento\Framework\DB\Transaction::class)
197+
->addObject($invoice)
198+
->addObject($invoice->getOrder())
199+
->save();
200+
201+
// Send the Credit Memo email
202+
$creditmemo->setEmailSent(true);
203+
$invoice->setEmailSent(true);
204+
$this->creditmemoSender->send($creditmemo);
205+
206+
$this->_objectManager->create(\Magento\Framework\DB\Transaction::class)
207+
->addObject($invoice)
208+
->save();
209+
210+
// Verify email in the mailbox
211+
$message = $this->transportBuilder->getSentMessage();
212+
$this->assertNotNull($message);
213+
$this->assertEquals('Credit memo for your Main Website Store order', $message->getSubject());
214+
215+
$this->assertStringContainsString(
216+
'Your Credit Memo # for Order #' . $orderIncrementId,
217+
$message->getBody()->getParts()[0]->getRawContent()
218+
);
219+
}
139220
}

0 commit comments

Comments
 (0)