orderRepository = $this->_objectManager->get(OrderRepository::class); $this->transportBuilder = $this->_objectManager->get(TransportBuilderMock::class); } /** * @return void */ public function testSendOrderEmail(): void { $order = $this->prepareRequest(); $this->dispatch('backend/sales/order/email'); $this->assertSessionMessages( $this->equalTo([(string)__('You sent the order email.')]), \Magento\Framework\Message\MessageInterface::TYPE_SUCCESS ); $redirectUrl = 'sales/order/view/order_id/' . $order->getEntityId(); $this->assertRedirect($this->stringContains($redirectUrl)); $message = $this->transportBuilder->getSentMessage(); $subject = __('Your %1 order confirmation', $order->getStore()->getFrontendName())->render(); $assert = $this->logicalAnd( new StringContains($order->getBillingAddress()->getName()), new StringContains( 'Thank you for your order from ' . $order->getStore()->getFrontendName() ), new StringContains( "Your Order #{$order->getIncrementId()}" ) ); $this->assertEquals($message->getSubject(), $subject); $this->assertThat($message->getRawMessage(), $assert); } /** * @inheritdoc */ public function testAclHasAccess() { $this->prepareRequest(); parent::testAclHasAccess(); } /** * @inheritdoc */ public function testAclNoAccess() { $this->prepareRequest(); parent::testAclNoAccess(); } /** * @param string $incrementalId * @return OrderInterface|null */ private function getOrder(string $incrementalId) { /** @var SearchCriteria $searchCriteria */ $searchCriteria = $this->_objectManager->create(SearchCriteriaBuilder::class) ->addFilter(OrderInterface::INCREMENT_ID, $incrementalId) ->create(); $orders = $this->orderRepository->getList($searchCriteria)->getItems(); /** @var OrderInterface|null $order */ $order = reset($orders); return $order; } /** * @return OrderInterface|null */ private function prepareRequest() { $order = $this->getOrder('100000001'); $this->getRequest()->setParams(['order_id' => $order->getEntityId()]); return $order; } }