132 lines
4.3 KiB
PHP
Executable File
132 lines
4.3 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Sales\Block\Order;
|
|
|
|
use Magento\Framework\ObjectManagerInterface;
|
|
use Magento\Framework\View\Element\Context;
|
|
use Magento\Framework\View\Element\Text;
|
|
use Magento\Framework\View\Layout;
|
|
use Magento\Framework\View\LayoutInterface;
|
|
use Magento\Sales\Api\Data\OrderInterfaceFactory;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use Magento\TestFramework\Helper\Xpath;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Tests for order totals block.
|
|
*
|
|
* @magentoAppArea frontend
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
class TotalsTest extends TestCase
|
|
{
|
|
/** @var ObjectManagerInterface */
|
|
private $objectManager;
|
|
|
|
/** @var Layout */
|
|
private $layout;
|
|
|
|
/** @var Totals */
|
|
private $block;
|
|
|
|
/** @var OrderInterfaceFactory */
|
|
private $orderFactory;
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->objectManager = Bootstrap::getObjectManager();
|
|
$this->layout = $this->objectManager->get(LayoutInterface::class);
|
|
$this->block = $this->layout->createBlock(Totals::class, 'block');
|
|
$this->orderFactory = $this->objectManager->get(OrderInterfaceFactory::class);
|
|
}
|
|
|
|
/**
|
|
* @magentoAppIsolation enabled
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testToHtmlChildrenInitialized(): void
|
|
{
|
|
$this->block->setOrder($this->orderFactory->create())->setTemplate('order/totals.phtml');
|
|
$context = $this->objectManager->get(Context::class);
|
|
$childOne = $this->getMockBuilder(Text::class)
|
|
->setMethods(['initTotals'])
|
|
->setConstructorArgs([$context])
|
|
->getMock();
|
|
$childOne->expects($this->once())->method('initTotals');
|
|
$this->layout->addBlock($childOne, 'child1', 'block');
|
|
$childTwo = $this->getMockBuilder(Text::class)
|
|
->setMethods(['initTotals'])
|
|
->setConstructorArgs([$context])
|
|
->getMock();
|
|
$childTwo->expects($this->once())->method('initTotals');
|
|
$this->layout->addBlock($childTwo, 'child2', 'block');
|
|
$childThree = $this->getMockBuilder(Text::class)
|
|
->setMethods(['initTotals'])
|
|
->setConstructorArgs([$context])
|
|
->getMock();
|
|
$childThree->expects($this->once())->method('initTotals');
|
|
$this->layout->addBlock($childThree, 'child3', 'block');
|
|
$this->block->toHtml();
|
|
}
|
|
|
|
/**
|
|
* @magentoDataFixture Magento/Sales/_files/customer_order_with_two_items.php
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testOrderTotalsBlock(): void
|
|
{
|
|
$order = $this->orderFactory->create()->loadByIncrementId('100000555');
|
|
$blockHtml = $this->block->setTemplate('Magento_Sales::order/totals.phtml')->setOrder($order)->toHtml();
|
|
$message = '"%s" for order wasn\'t found or not equals to %01.2f';
|
|
$this->assertEquals(
|
|
1,
|
|
Xpath::getElementsCountForXpath(
|
|
sprintf(
|
|
"//th[contains(text(), '%s')]/following-sibling::td/span[contains(text(), '%01.2f')]",
|
|
__('Subtotal'),
|
|
$order->getSubtotal()
|
|
),
|
|
$blockHtml
|
|
),
|
|
sprintf($message, __('Subtotal'), $order->getSubtotal())
|
|
);
|
|
$this->assertEquals(
|
|
1,
|
|
Xpath::getElementsCountForXpath(
|
|
sprintf(
|
|
"//th[contains(text(), '%s')]/following-sibling::td/span[contains(text(), '%01.2f')]",
|
|
__('Shipping & Handling'),
|
|
$order->getShippingAmount()
|
|
),
|
|
$blockHtml
|
|
),
|
|
sprintf($message, __('Shipping & Handling'), $order->getShippingAmount())
|
|
);
|
|
$this->assertEquals(
|
|
1,
|
|
Xpath::getElementsCountForXpath(
|
|
sprintf(
|
|
"//tr[contains(@class, 'grand_total') and contains(.//strong, '%s')]"
|
|
. "//span[contains(text(), '%01.2f')]",
|
|
__('Grand Total'),
|
|
$order->getGrandTotal()
|
|
),
|
|
$blockHtml
|
|
),
|
|
sprintf($message, __('Grand Total'), $order->getGrandTotal())
|
|
);
|
|
}
|
|
}
|