CheckoutFieldsViewTest.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\ViewModel\Config;
  6. use Magento\TestFramework\Helper\Bootstrap;
  7. use Magento\TestFramework\Request;
  8. use Temando\Shipping\Model\Location;
  9. use Temando\Shipping\Model\LocationInterface;
  10. use Temando\Shipping\ViewModel\DataProvider\EntityUrlInterface;
  11. use Temando\Shipping\ViewModel\PageActionsInterface;
  12. use Temando\Shipping\ViewModel\ShippingApiInterface;
  13. /**
  14. * Temando Checkout Fields View Model Test
  15. *
  16. * @package Temando\Shipping\Test\Integration
  17. * @author Christoph Aßmann <christoph.assmann@netresearch.de>
  18. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  19. * @link http://www.temando.com/
  20. */
  21. class CheckoutFieldsViewTest extends \PHPUnit\Framework\TestCase
  22. {
  23. /**
  24. * @test
  25. */
  26. public function backButtonIsAvailableInComponent()
  27. {
  28. /** @var CheckoutFields $viewModel */
  29. $viewModel = Bootstrap::getObjectManager()->get(CheckoutFields::class);
  30. $this->assertInstanceOf(PageActionsInterface::class, $viewModel);
  31. $actions = $viewModel->getMainActions();
  32. $this->assertNotEmpty($actions);
  33. $this->assertInternalType('array', $actions);
  34. $this->assertArrayHasKey('back', $actions);
  35. }
  36. /**
  37. * @test
  38. * @magentoConfigFixture default/carriers/temando/session_endpoint https://auth.temando.io/v1/
  39. * @magentoConfigFixture default/carriers/temando/sovereign_endpoint https://foo.temando.io/v1/
  40. */
  41. public function shippingApiCredentialsAreAvailableInLocationComponents()
  42. {
  43. /** @var CheckoutFields $viewModel */
  44. $viewModel = Bootstrap::getObjectManager()->get(CheckoutFields::class);
  45. $this->assertInstanceOf(ShippingApiInterface::class, $viewModel);
  46. $this->assertEquals('https://foo.temando.io/v1/', $viewModel->getShippingApiAccess()->getApiEndpoint());
  47. }
  48. /**
  49. * @test
  50. * @magentoAppArea adminhtml
  51. */
  52. public function getUpdateCheckoutFieldEndpoint()
  53. {
  54. /** @var CheckoutFields $viewModel */
  55. $viewModel = Bootstrap::getObjectManager()->get(CheckoutFields::class);
  56. $this->assertContains('temando/settings_checkout/save', $viewModel->getUpdateCheckoutFieldEndpoint());
  57. }
  58. /**
  59. * @test
  60. * @magentoAppArea adminhtml
  61. */
  62. public function getConfigUrl()
  63. {
  64. /** @var CheckoutFields $viewModel */
  65. $viewModel = Bootstrap::getObjectManager()->get(CheckoutFields::class);
  66. $url = $viewModel->getConfigurationPageUrl();
  67. $this->assertContains('system_config/edit', $url);
  68. $this->assertContains('carriers', $url);
  69. $this->assertContains('#carriers_temando-link', $url);
  70. }
  71. /**
  72. * @test
  73. * @magentoAppArea adminhtml
  74. * @magentoConfigFixture default/carriers/temando/additional_checkout_fields [{"foo": "bar"},{"fox": "baz"}]
  75. */
  76. public function getCheckoutFieldsData()
  77. {
  78. /** @var CheckoutFields $viewModel */
  79. $viewModel = Bootstrap::getObjectManager()->get(CheckoutFields::class);
  80. $fieldsData = $viewModel->getCheckoutFieldsData();
  81. $this->assertJson($fieldsData);
  82. $fields = json_decode($fieldsData);
  83. $this->assertInternalType('array', $fields);
  84. $this->assertCount(2, $fields);
  85. }
  86. }