DepersonalizePluginTest.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Test\Unit\Model\Layout;
  7. /**
  8. * Class DepersonalizePluginTest
  9. *
  10. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  11. */
  12. class DepersonalizePluginTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var \Magento\Customer\Model\Layout\DepersonalizePlugin
  16. */
  17. protected $plugin;
  18. /**
  19. * @var \Magento\Framework\View\Layout|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $layoutMock;
  22. /**
  23. * @var \Magento\Framework\Session\Generic|\PHPUnit_Framework_MockObject_MockObject
  24. */
  25. protected $sessionMock;
  26. /**
  27. * @var \Magento\Customer\Model\Session|\PHPUnit_Framework_MockObject_MockObject
  28. */
  29. protected $customerSessionMock;
  30. /**
  31. * @var \Magento\Customer\Model\CustomerFactory|\PHPUnit_Framework_MockObject_MockObject
  32. */
  33. protected $customerFactoryMock;
  34. /**
  35. * @var \Magento\Customer\Model\Customer|\PHPUnit_Framework_MockObject_MockObject
  36. */
  37. protected $customerMock;
  38. /**
  39. * @var \Magento\Customer\Model\Visitor|\PHPUnit_Framework_MockObject_MockObject
  40. */
  41. protected $visitorMock;
  42. /**
  43. * @var \Magento\PageCache\Model\DepersonalizeChecker|\PHPUnit_Framework_MockObject_MockObject
  44. */
  45. protected $depersonalizeCheckerMock;
  46. /**
  47. * SetUp
  48. */
  49. protected function setUp()
  50. {
  51. $this->layoutMock = $this->createMock(\Magento\Framework\View\Layout::class);
  52. $this->sessionMock = $this->createPartialMock(
  53. \Magento\Framework\Session\Generic::class,
  54. ['clearStorage', 'setData', 'getData']
  55. );
  56. $this->customerSessionMock = $this->createPartialMock(
  57. \Magento\Customer\Model\Session::class,
  58. ['getCustomerGroupId', 'setCustomerGroupId', 'clearStorage', 'setCustomer']
  59. );
  60. $this->customerFactoryMock = $this->createPartialMock(
  61. \Magento\Customer\Model\CustomerFactory::class,
  62. ['create']
  63. );
  64. $this->customerMock = $this->createPartialMock(
  65. \Magento\Customer\Model\Customer::class,
  66. ['setGroupId', '__wakeup']
  67. );
  68. $this->visitorMock = $this->createMock(\Magento\Customer\Model\Visitor::class);
  69. $this->customerFactoryMock->expects($this->any())
  70. ->method('create')
  71. ->will($this->returnValue($this->customerMock));
  72. $this->depersonalizeCheckerMock = $this->createMock(\Magento\PageCache\Model\DepersonalizeChecker::class);
  73. $this->plugin = new \Magento\Customer\Model\Layout\DepersonalizePlugin(
  74. $this->depersonalizeCheckerMock,
  75. $this->sessionMock,
  76. $this->customerSessionMock,
  77. $this->customerFactoryMock,
  78. $this->visitorMock
  79. );
  80. }
  81. public function testBeforeGenerateXml()
  82. {
  83. $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
  84. $this->customerSessionMock->expects($this->once())->method('getCustomerGroupId');
  85. $this->sessionMock
  86. ->expects($this->once())
  87. ->method('getData')
  88. ->with($this->equalTo(\Magento\Framework\Data\Form\FormKey::FORM_KEY));
  89. $output = $this->plugin->beforeGenerateXml($this->layoutMock);
  90. $this->assertEquals([], $output);
  91. }
  92. public function testBeforeGenerateXmlNoDepersonalize()
  93. {
  94. $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
  95. $this->customerSessionMock->expects($this->never())->method('getCustomerGroupId');
  96. $this->sessionMock
  97. ->expects($this->never())
  98. ->method('getData');
  99. $output = $this->plugin->beforeGenerateXml($this->layoutMock);
  100. $this->assertEquals([], $output);
  101. }
  102. public function testAfterGenerateXml()
  103. {
  104. $expectedResult = $this->createMock(\Magento\Framework\View\Layout::class);
  105. $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(true);
  106. $this->visitorMock->expects($this->once())->method('setSkipRequestLogging')->with($this->equalTo(true));
  107. $this->visitorMock->expects($this->once())->method('unsetData');
  108. $this->sessionMock->expects($this->once())->method('clearStorage');
  109. $this->customerSessionMock->expects($this->once())->method('clearStorage');
  110. $this->customerSessionMock->expects($this->once())->method('setCustomerGroupId')->with($this->equalTo(null));
  111. $this->customerMock->expects($this->once())->method('setGroupId')->with($this->equalTo(null))->willReturnSelf();
  112. $this->sessionMock
  113. ->expects($this->once())
  114. ->method('setData')
  115. ->with(
  116. $this->equalTo(\Magento\Framework\Data\Form\FormKey::FORM_KEY),
  117. $this->equalTo(null)
  118. );
  119. $this->customerSessionMock
  120. ->expects($this->once())
  121. ->method('setCustomer')
  122. ->with($this->equalTo($this->customerMock));
  123. $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
  124. $this->assertSame($expectedResult, $actualResult);
  125. }
  126. public function testAfterGenerateXmlNoDepersonalize()
  127. {
  128. $expectedResult = $this->createMock(\Magento\Framework\View\Layout::class);
  129. $this->depersonalizeCheckerMock->expects($this->once())->method('checkIfDepersonalize')->willReturn(false);
  130. $this->visitorMock->expects($this->never())->method('setSkipRequestLogging');
  131. $this->visitorMock->expects($this->never())->method('unsetData');
  132. $this->sessionMock->expects($this->never())->method('clearStorage');
  133. $this->customerSessionMock->expects($this->never())->method('clearStorage');
  134. $this->customerSessionMock->expects($this->never())->method('setCustomerGroupId');
  135. $this->customerMock->expects($this->never())->method('setGroupId');
  136. $this->sessionMock->expects($this->never())->method('setData');
  137. $this->customerSessionMock->expects($this->never())->method('setCustomer');
  138. $actualResult = $this->plugin->afterGenerateXml($this->layoutMock, $expectedResult);
  139. $this->assertSame($expectedResult, $actualResult);
  140. }
  141. }