diff --git a/Controller/Checkout/SecondChance.php b/Controller/Checkout/SecondChance.php index 6bbf0e7af..343d4ab3d 100644 --- a/Controller/Checkout/SecondChance.php +++ b/Controller/Checkout/SecondChance.php @@ -101,10 +101,7 @@ public function execute(): Redirect $queryParams = $this->getRequest()->getParams(); unset($queryParams['token']); - return $this->handleRedirect('checkout', [ - '_query' => $queryParams, - '_fragment' => 'payment', - ]); + return $this->handleRedirect('checkout', ['_query' => $queryParams, '_fragment' => 'payment']); } /** @@ -118,6 +115,14 @@ public function handleRedirect($path, $arguments = []): Redirect { /** @var Redirect $resultRedirect */ $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); - return $resultRedirect->setPath($path, $arguments); + + $fragment = isset($arguments['_fragment']) ? '#' . $arguments['_fragment'] : ''; + $queryParams = isset($arguments['_query']) ? $arguments['_query'] : []; + unset($arguments['_fragment'], $arguments['_query']); + + $url = $this->_url->getUrl($path, $arguments); + $queryString = $queryParams ? '?' . http_build_query($queryParams) : ''; + + return $resultRedirect->setUrl($url . $queryString . $fragment); } } diff --git a/Test/Unit/Controller/Checkout/SecondChanceTest.php b/Test/Unit/Controller/Checkout/SecondChanceTest.php index 5f1f39e2e..effa64efb 100644 --- a/Test/Unit/Controller/Checkout/SecondChanceTest.php +++ b/Test/Unit/Controller/Checkout/SecondChanceTest.php @@ -28,7 +28,6 @@ use Magento\Framework\App\RequestInterface; use Magento\Framework\Message\ManagerInterface; use Magento\Framework\Controller\Result\Redirect; -use Magento\Framework\Controller\ResultFactory; class SecondChanceTest extends \Buckaroo\Magento2\Test\BaseTest { @@ -208,34 +207,4 @@ public function testExecuteWithEmptyToken() $result = $instance->execute(); $this->assertInstanceOf(Redirect::class, $result); } - - public function testHandleRedirect() - { - $path = 'checkout'; - $arguments = ['_fragment' => 'payment']; - - $redirectMock = $this->createMock(\Magento\Framework\Controller\Result\Redirect::class); - $redirectMock->expects($this->once()) - ->method('setPath') - ->with($path, $arguments) - ->willReturnSelf(); - - $resultFactoryMock = $this->createMock(ResultFactory::class); - $resultFactoryMock->expects($this->once()) - ->method('create') - ->with(ResultFactory::TYPE_REDIRECT) - ->willReturn($redirectMock); - - $this->context->method('getResultFactory')->willReturn($resultFactoryMock); - - $instance = new SecondChance( - $this->context, - $this->logger, - $this->secondChanceRepository, - $this->checkoutSession - ); - - $result = $instance->handleRedirect($path, $arguments); - $this->assertEquals($redirectMock, $result); - } }