UrlBuilderTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\ReleaseNotification\Test\Unit\Model\ContentProvider\Http;
  7. use Magento\Framework\App\Config\ScopeConfigInterface;
  8. use Magento\ReleaseNotification\Model\ContentProvider\Http\UrlBuilder;
  9. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  10. class UrlBuilderTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
  14. */
  15. private $configMock;
  16. /**
  17. * @var UrlBuilder
  18. */
  19. private $urlBuilder;
  20. public function setUp()
  21. {
  22. $this->configMock = $this->getMockBuilder(ScopeConfigInterface::class)
  23. ->getMockForAbstractClass();
  24. $objectManager = new ObjectManager($this);
  25. $this->urlBuilder = $objectManager->getObject(
  26. UrlBuilder::class,
  27. [
  28. 'config' => $this->configMock,
  29. ]
  30. );
  31. }
  32. /**
  33. * @param string $baseUrl
  34. * @param string $expected
  35. * @param string $version
  36. * @param string $edition
  37. * @param string $locale
  38. * @dataProvider getUrlDataProvider
  39. */
  40. public function testGetUrl($baseUrl, $version, $edition, $locale, $expected)
  41. {
  42. $this->configMock->expects($this->once())
  43. ->method('getValue')
  44. ->willReturn($baseUrl);
  45. $this->configMock->expects($this->once())
  46. ->method('isSetFlag')
  47. ->willReturn(1);
  48. $this->assertEquals(
  49. $expected,
  50. $this->urlBuilder->getUrl($version, $edition, $locale)
  51. );
  52. }
  53. /**
  54. * @return array
  55. */
  56. public function getUrlDataProvider()
  57. {
  58. return [
  59. 'all' => [
  60. 'content/url/example',
  61. 'version',
  62. 'edition',
  63. 'locale',
  64. 'https://content/url/example/version/edition/locale.json'
  65. ],
  66. 'no-edition' => [
  67. 'content/url/example',
  68. 'version',
  69. '',
  70. 'locale',
  71. 'https://content/url/example/version/locale.json'
  72. ],
  73. 'no-locale' => [
  74. 'content/url/example',
  75. 'version',
  76. 'edition',
  77. '',
  78. 'https://content/url/example/version/edition.json'
  79. ],
  80. 'no-content-url' => [
  81. '',
  82. 'version',
  83. 'edition',
  84. 'locale',
  85. ''
  86. ]
  87. ];
  88. }
  89. }