Files
esun3d/app/code/Esun/Cart/Test/Unit/Plugin/TestMode/RestrictCheckoutPluginTest.php
T
2026-09-15 10:35:56 +08:00

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);
}
}