init
This commit is contained in:
+69
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Esun\CustomerMessage\Test\Unit\Plugin\Adminhtml;
|
||||
|
||||
use Esun\CustomerMessage\Plugin\Adminhtml\OrderViewMessagesButton;
|
||||
use Magento\Backend\Model\UrlInterface;
|
||||
use Magento\Framework\View\LayoutInterface;
|
||||
use Magento\Sales\Block\Adminhtml\Order\View;
|
||||
use Magento\Sales\Model\Order;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class OrderViewMessagesButtonTest extends TestCase
|
||||
{
|
||||
private UrlInterface&MockObject $url;
|
||||
private OrderViewMessagesButton $plugin;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->url = $this->createMock(UrlInterface::class);
|
||||
$this->plugin = new OrderViewMessagesButton($this->url);
|
||||
}
|
||||
|
||||
public function testAddsMessagesButtonAndPreservesLayoutArgument(): void
|
||||
{
|
||||
$layout = $this->createMock(LayoutInterface::class);
|
||||
$order = $this->createMock(Order::class);
|
||||
$order->method('getCustomerId')->willReturn(3);
|
||||
$order->method('getId')->willReturn(16);
|
||||
|
||||
$view = $this->getMockBuilder(View::class)
|
||||
->disableOriginalConstructor()
|
||||
->onlyMethods(['getOrder', 'addButton'])
|
||||
->getMock();
|
||||
$view->method('getOrder')->willReturn($order);
|
||||
$this->url->expects(self::once())
|
||||
->method('getUrl')
|
||||
->with('esun_customer_message/message/index', ['order_id' => 16])
|
||||
->willReturn('https://esun3d.test/admin/messages/order/16');
|
||||
$view->expects(self::once())
|
||||
->method('addButton')
|
||||
->with(
|
||||
'esun_order_messages',
|
||||
self::callback(static fn(array $button): bool =>
|
||||
(string)$button['label'] === 'Messages'
|
||||
&& str_contains($button['onclick'], '/messages/order/16')
|
||||
)
|
||||
);
|
||||
|
||||
self::assertSame([$layout], $this->plugin->beforeSetLayout($view, $layout));
|
||||
}
|
||||
|
||||
public function testPreservesLayoutWithoutAddingButtonForGuestOrder(): void
|
||||
{
|
||||
$layout = $this->createMock(LayoutInterface::class);
|
||||
$order = $this->createMock(Order::class);
|
||||
$order->method('getCustomerId')->willReturn(null);
|
||||
|
||||
$view = $this->getMockBuilder(View::class)
|
||||
->disableOriginalConstructor()
|
||||
->onlyMethods(['getOrder', 'addButton'])
|
||||
->getMock();
|
||||
$view->method('getOrder')->willReturn($order);
|
||||
$view->expects(self::never())->method('addButton');
|
||||
|
||||
self::assertSame([$layout], $this->plugin->beforeSetLayout($view, $layout));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user