53 lines
2.0 KiB
PHP
53 lines
2.0 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Esun\Cart\Test\Unit\Plugin\TestMode;
|
|
|
|
use Esun\Cart\Model\TestModeConfig;
|
|
use Esun\Cart\Plugin\TestMode\RestrictCheckoutPlugin;
|
|
use Magento\Checkout\Controller\Index\Index as CheckoutIndex;
|
|
use Magento\Framework\Controller\Result\Redirect;
|
|
use Magento\Framework\Controller\Result\RedirectFactory;
|
|
use Magento\Framework\Controller\ResultInterface;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class RestrictCheckoutPluginTest extends TestCase
|
|
{
|
|
public function testContinuesToCheckoutWhenCustomerIsNotRestricted(): void
|
|
{
|
|
$config = $this->createMock(TestModeConfig::class);
|
|
$config->method('isRestricted')->willReturn(false);
|
|
$redirectFactory = $this->createMock(RedirectFactory::class);
|
|
$expectedResult = $this->createMock(ResultInterface::class);
|
|
$plugin = new RestrictCheckoutPlugin($config, $redirectFactory);
|
|
|
|
$result = $plugin->aroundExecute(
|
|
$this->createMock(CheckoutIndex::class),
|
|
static fn (): ResultInterface => $expectedResult
|
|
);
|
|
|
|
self::assertSame($expectedResult, $result);
|
|
}
|
|
|
|
public function testRedirectsRestrictedCustomerToCart(): void
|
|
{
|
|
$config = $this->createMock(TestModeConfig::class);
|
|
$config->method('isRestricted')->willReturn(true);
|
|
$redirect = $this->createMock(Redirect::class);
|
|
$redirect->expects(self::once())
|
|
->method('setPath')
|
|
->with('checkout/cart', ['_query' => ['purchase_test_mode' => 1]])
|
|
->willReturnSelf();
|
|
$redirectFactory = $this->createMock(RedirectFactory::class);
|
|
$redirectFactory->expects(self::once())->method('create')->willReturn($redirect);
|
|
$plugin = new RestrictCheckoutPlugin($config, $redirectFactory);
|
|
|
|
$result = $plugin->aroundExecute(
|
|
$this->createMock(CheckoutIndex::class),
|
|
static fn (): ResultInterface => throw new \LogicException('Checkout must not continue.')
|
|
);
|
|
|
|
self::assertSame($redirect, $result);
|
|
}
|
|
}
|