VarnishPluginTest.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\PageCache\Test\Unit\Model\Controller\Result;
  7. use Magento\PageCache\Model\Controller\Result\VarnishPlugin;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  9. use Magento\PageCache\Model\Config;
  10. use Magento\Framework\App\PageCache\Version;
  11. use Magento\Framework\App\State as AppState;
  12. use Magento\Framework\Registry;
  13. use Magento\Framework\Controller\ResultInterface;
  14. use Magento\Framework\App\Response\Http as ResponseHttp;
  15. /**
  16. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  17. */
  18. class VarnishPluginTest extends \PHPUnit\Framework\TestCase
  19. {
  20. /**
  21. * @var VarnishPlugin
  22. */
  23. private $plugin;
  24. /**
  25. * @var ObjectManagerHelper
  26. */
  27. private $objectManagerHelper;
  28. /**
  29. * @var Config|\PHPUnit_Framework_MockObject_MockObject
  30. */
  31. private $configMock;
  32. /**
  33. * @var Version|\PHPUnit_Framework_MockObject_MockObject
  34. */
  35. private $versionMock;
  36. /**
  37. * @var AppState|\PHPUnit_Framework_MockObject_MockObject
  38. */
  39. private $appStateMock;
  40. /**
  41. * @var Registry|\PHPUnit_Framework_MockObject_MockObject
  42. */
  43. private $registryMock;
  44. /**
  45. * @var ResultInterface|\PHPUnit_Framework_MockObject_MockObject
  46. */
  47. private $resultMock;
  48. /**
  49. * @var ResponseHttp|\PHPUnit_Framework_MockObject_MockObject
  50. */
  51. private $responseMock;
  52. protected function setUp()
  53. {
  54. $this->configMock = $this->getMockBuilder(Config::class)
  55. ->disableOriginalConstructor()
  56. ->getMock();
  57. $this->versionMock = $this->getMockBuilder(Version::class)
  58. ->disableOriginalConstructor()
  59. ->getMock();
  60. $this->appStateMock = $this->getMockBuilder(AppState::class)
  61. ->disableOriginalConstructor()
  62. ->getMock();
  63. $this->registryMock = $this->getMockBuilder(Registry::class)
  64. ->disableOriginalConstructor()
  65. ->getMock();
  66. $this->resultMock = $this->getMockBuilder(ResultInterface::class)
  67. ->getMockForAbstractClass();
  68. $this->responseMock = $this->getMockBuilder(ResponseHttp::class)
  69. ->disableOriginalConstructor()
  70. ->getMock();
  71. $this->objectManagerHelper = new ObjectManagerHelper($this);
  72. $this->plugin = $this->objectManagerHelper->getObject(
  73. VarnishPlugin::class,
  74. [
  75. 'registry' => $this->registryMock,
  76. 'config' => $this->configMock,
  77. 'state' => $this->appStateMock,
  78. 'version' => $this->versionMock
  79. ]
  80. );
  81. }
  82. /**
  83. * @param bool $usePlugin
  84. * @param int $setCacheDebugHeaderCount
  85. * @param int $getModeCount
  86. * @param int $processCount
  87. *
  88. * @dataProvider afterRenderResultDataProvider
  89. */
  90. public function testAfterRenderResult($usePlugin, $setCacheDebugHeaderCount, $getModeCount, $processCount)
  91. {
  92. $this->responseMock->expects(static::exactly($setCacheDebugHeaderCount))
  93. ->method('setHeader')
  94. ->with('X-Magento-Debug', 1);
  95. $this->registryMock->expects(static::once())
  96. ->method('registry')
  97. ->with('use_page_cache_plugin')
  98. ->willReturn($usePlugin);
  99. $this->configMock->expects(static::once())
  100. ->method('isEnabled')
  101. ->willReturn(true);
  102. $this->configMock->expects(static::once())
  103. ->method('getType')
  104. ->willReturn(Config::VARNISH);
  105. $this->appStateMock->expects(static::exactly($getModeCount))
  106. ->method('getMode')
  107. ->willReturn(AppState::MODE_DEVELOPER);
  108. $this->versionMock->expects(static::exactly($processCount))
  109. ->method('process');
  110. $this->assertSame(
  111. $this->resultMock,
  112. $this->plugin->afterRenderResult($this->resultMock, $this->resultMock, $this->responseMock)
  113. );
  114. }
  115. /**
  116. * @return array
  117. */
  118. public function afterRenderResultDataProvider()
  119. {
  120. return [
  121. [true, 1, 1, 1],
  122. [false, 0, 0, 0]
  123. ];
  124. }
  125. }