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