CmsPageTest.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sitemap\Test\Unit\Model\ItemProvider;
  7. use Magento\Framework\DataObject;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  9. use Magento\Sitemap\Model\ItemProvider\CmsPage as CmsPageItemResolver;
  10. use Magento\Sitemap\Model\ItemProvider\ConfigReaderInterface;
  11. use Magento\Sitemap\Model\ResourceModel\Cms\Page as CmsPageResource;
  12. use Magento\Sitemap\Model\ResourceModel\Cms\PageFactory;
  13. use Magento\Sitemap\Model\SitemapItem;
  14. use Magento\Sitemap\Model\SitemapItemInterfaceFactory;
  15. class CmsPageTest extends \PHPUnit\Framework\TestCase
  16. {
  17. public function testGetItemsEmpty()
  18. {
  19. $configReaderMock = $this->getConfigReaderMock();
  20. $cmsPageMock = $this->getCmsPageCollectionMock([]);
  21. $cmsPageFactoryMock = $this->getCmsPageFactoryMock($cmsPageMock);
  22. $itemFactoryMock = $this->getItemFactoryMock();
  23. $resolver = new CmsPageItemResolver($configReaderMock, $cmsPageFactoryMock, $itemFactoryMock);
  24. $this->assertSame([], $resolver->getItems(1));
  25. }
  26. /**
  27. * @dataProvider pageProvider
  28. * @param array $pages
  29. */
  30. public function testGetItems(array $pages = [])
  31. {
  32. $configReaderMock = $this->getConfigReaderMock();
  33. $cmsPageMock = $this->getCmsPageCollectionMock($pages);
  34. $cmsPageFactoryMock = $this->getCmsPageFactoryMock($cmsPageMock);
  35. $itemFactoryMock = $this->getItemFactoryMock();
  36. $resolver = new CmsPageItemResolver($configReaderMock, $cmsPageFactoryMock, $itemFactoryMock);
  37. $items = $resolver->getItems(1);
  38. $this->assertTrue(count($items) == count($pages));
  39. foreach ($pages as $index => $page) {
  40. $this->assertSame($page->getUpdatedAt(), $items[$index]->getUpdatedAt());
  41. $this->assertSame('daily', $items[$index]->getChangeFrequency());
  42. $this->assertSame('1.0', $items[$index]->getPriority());
  43. $this->assertSame($page->getImages(), $items[$index]->getImages());
  44. $this->assertSame($page->getUrl(), $items[$index]->getUrl());
  45. }
  46. }
  47. /**
  48. * @return array
  49. */
  50. public function pageProvider()
  51. {
  52. return [
  53. [
  54. [
  55. new DataObject([
  56. 'url' => 'http://dummy.url',
  57. 'id' => '/url',
  58. 'updated_at' => '2017-01-01 23:59:59'
  59. ])
  60. ]
  61. ]
  62. ];
  63. }
  64. /**
  65. * @return \PHPUnit_Framework_MockObject_MockObject
  66. */
  67. private function getItemFactoryMock()
  68. {
  69. $itemFactoryMock = $this->getMockBuilder(SitemapItemInterfaceFactory::class)
  70. ->setMethods(['create'])
  71. ->disableOriginalConstructor()
  72. ->getMock();
  73. $itemFactoryMock->expects(self::any())
  74. ->method('create')
  75. ->willReturnCallback(function ($data) {
  76. $helper = new ObjectManager($this);
  77. return $helper->getObject(SitemapItem::class, $data);
  78. });
  79. return $itemFactoryMock;
  80. }
  81. /**
  82. * @param $returnValue
  83. * @return \PHPUnit_Framework_MockObject_MockObject
  84. */
  85. private function getCmsPageFactoryMock($returnValue)
  86. {
  87. $cmsPageFactoryMock = $this->getMockBuilder(PageFactory::class)
  88. ->setMethods(['create'])
  89. ->disableOriginalConstructor()
  90. ->getMock();
  91. $cmsPageFactoryMock->expects(self::any())
  92. ->method('create')
  93. ->willReturn($returnValue);
  94. return $cmsPageFactoryMock;
  95. }
  96. /**
  97. * @return \PHPUnit_Framework_MockObject_MockObject
  98. */
  99. private function getConfigReaderMock()
  100. {
  101. $configReaderMock = $this->getMockForAbstractClass(ConfigReaderInterface::class);
  102. $configReaderMock->expects($this->any())
  103. ->method('getPriority')
  104. ->willReturn('1.0');
  105. $configReaderMock->expects($this->any())
  106. ->method('getChangeFrequency')
  107. ->willReturn('daily');
  108. return $configReaderMock;
  109. }
  110. /**
  111. * @param $returnValue
  112. * @return \PHPUnit_Framework_MockObject_MockObject
  113. */
  114. private function getCmsPageCollectionMock($returnValue)
  115. {
  116. $sitemapCmsPageMock = $this->getMockBuilder(CmsPageResource::class)
  117. ->setMethods(['getCollection'])
  118. ->disableOriginalConstructor()
  119. ->getMock();
  120. $sitemapCmsPageMock->expects(self::any())
  121. ->method('getCollection')
  122. ->willReturn($returnValue);
  123. return $sitemapCmsPageMock;
  124. }
  125. }