PageTest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Test\Unit\Model\ResourceModel;
  7. use Magento\Cms\Api\Data\PageInterface;
  8. use Magento\Cms\Model\ResourceModel\Page as PageResourceModel;
  9. use Magento\Framework\Model\ResourceModel\Db\Context;
  10. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  11. use Magento\Store\Model\StoreManagerInterface;
  12. use Magento\Framework\Stdlib\DateTime;
  13. use Magento\Framework\EntityManager\EntityManager;
  14. use Magento\Framework\EntityManager\MetadataPool;
  15. use Magento\Cms\Model\Page;
  16. use Magento\Framework\App\ResourceConnection;
  17. /**
  18. * Class PageTest
  19. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  20. */
  21. class PageTest extends \PHPUnit\Framework\TestCase
  22. {
  23. /**
  24. * @var PageResourceModel
  25. */
  26. protected $model;
  27. /**
  28. * @var Context|\PHPUnit_Framework_MockObject_MockObject
  29. */
  30. protected $contextMock;
  31. /**
  32. * @var StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
  33. */
  34. protected $storeManagerMock;
  35. /**
  36. * @var DateTime|\PHPUnit_Framework_MockObject_MockObject
  37. */
  38. protected $dateTimeMock;
  39. /**
  40. * @var EntityManager|\PHPUnit_Framework_MockObject_MockObject
  41. */
  42. protected $entityManagerMock;
  43. /**
  44. * @var MetadataPool|\PHPUnit_Framework_MockObject_MockObject
  45. */
  46. protected $metadataPoolMock;
  47. /**
  48. * @var Page|\PHPUnit_Framework_MockObject_MockObject
  49. */
  50. protected $pageMock;
  51. /**
  52. * @var ResourceConnection|\PHPUnit_Framework_MockObject_MockObject
  53. */
  54. protected $resourcesMock;
  55. protected function setUp()
  56. {
  57. $this->contextMock = $this->getMockBuilder(Context::class)
  58. ->disableOriginalConstructor()
  59. ->getMock();
  60. $this->storeManagerMock = $this->getMockBuilder(StoreManagerInterface::class)
  61. ->getMockForAbstractClass();
  62. $this->dateTimeMock = $this->getMockBuilder(DateTime::class)
  63. ->disableOriginalConstructor()
  64. ->getMock();
  65. $this->entityManagerMock = $this->getMockBuilder(EntityManager::class)
  66. ->disableOriginalConstructor()
  67. ->getMock();
  68. $this->metadataPoolMock = $this->getMockBuilder(MetadataPool::class)
  69. ->disableOriginalConstructor()
  70. ->getMock();
  71. $this->pageMock = $this->getMockBuilder(Page::class)
  72. ->disableOriginalConstructor()
  73. ->getMock();
  74. $this->resourcesMock = $this->getMockBuilder(ResourceConnection::class)
  75. ->disableOriginalConstructor()
  76. ->getMock();
  77. $this->contextMock->expects($this->once())
  78. ->method('getResources')
  79. ->willReturn($this->resourcesMock);
  80. $this->model = (new ObjectManager($this))->getObject(PageResourceModel::class, [
  81. 'context' => $this->contextMock,
  82. 'storeManager' => $this->storeManagerMock,
  83. 'dateTime' => $this->dateTimeMock,
  84. 'entityManager' => $this->entityManagerMock,
  85. 'metadataPool' => $this->metadataPoolMock,
  86. ]);
  87. }
  88. public function testSave()
  89. {
  90. $this->entityManagerMock->expects($this->once())
  91. ->method('save')
  92. ->with($this->pageMock, [])
  93. ->willReturn(true);
  94. $this->assertInstanceOf(PageResourceModel::class, $this->model->save($this->pageMock));
  95. }
  96. public function testBeforeSave()
  97. {
  98. $this->pageMock->expects($this->any())
  99. ->method('getData')
  100. ->willReturnMap([
  101. ['identifier', null, 'test'],
  102. ['custom_theme_from', null, null],
  103. ['custom_theme_to', null, '10/02/2016'],
  104. ]);
  105. $this->dateTimeMock->expects($this->once())
  106. ->method('formatDate')
  107. ->with('10/02/2016')
  108. ->willReturn('10 Feb 2016');
  109. $this->pageMock->expects($this->any())
  110. ->method('setData')
  111. ->withConsecutive(
  112. ['custom_theme_from', null],
  113. ['custom_theme_to', '10 Feb 2016']
  114. );
  115. $this->model->beforeSave($this->pageMock);
  116. }
  117. }