SwitcherTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Store\Block;
  7. use Magento\Framework\App\ActionInterface;
  8. use Magento\TestFramework\Helper\Bootstrap;
  9. use Magento\Framework\Url\DecoderInterface;
  10. use Magento\Framework\App\ScopeInterface;
  11. /**
  12. * Integration tests for \Magento\Store\Block\Switcher block.
  13. */
  14. class SwitcherTest extends \PHPUnit\Framework\TestCase
  15. {
  16. /**
  17. * @var \Magento\TestFramework\ObjectManager
  18. */
  19. private $_objectManager;
  20. /**
  21. * @var DecoderInterface
  22. */
  23. private $decoder;
  24. /**
  25. * Set up.
  26. *
  27. * @return void
  28. */
  29. protected function setUp()
  30. {
  31. $this->_objectManager = Bootstrap::getObjectManager();
  32. $this->decoder = Bootstrap::getObjectManager()->create(DecoderInterface::class);
  33. }
  34. /**
  35. * Test that GetTargetStorePostData() method returns correct data.
  36. *
  37. * @magentoDataFixture Magento/Store/_files/store.php
  38. * @return void
  39. */
  40. public function testGetTargetStorePostData()
  41. {
  42. $storeCode = 'test';
  43. /** @var \Magento\Store\Block\Switcher $block */
  44. $block = $this->_objectManager->create(\Magento\Store\Block\Switcher::class);
  45. /** @var \Magento\Store\Api\StoreRepositoryInterface $storeRepository */
  46. $storeRepository = $this->_objectManager->create(\Magento\Store\Api\StoreRepositoryInterface::class);
  47. $store = $storeRepository->get($storeCode);
  48. $result = json_decode($block->getTargetStorePostData($store), true);
  49. $url = parse_url($this->decoder->decode($result['data'][ActionInterface::PARAM_NAME_URL_ENCODED]));
  50. $storeParsedQuery = [];
  51. if (isset($url['query'])) {
  52. parse_str($url['query'], $storeParsedQuery);
  53. }
  54. $this->assertSame($storeCode, $result['data']['___store']);
  55. $this->assertSame($storeCode, $storeParsedQuery['___store']);
  56. $this->assertSame(ScopeInterface::SCOPE_DEFAULT, $result['data']['___from_store']);
  57. }
  58. }