EnabledTest.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\Test\Unit\Model\Config\Backend;
  7. use Magento\Analytics\Model\Config\Backend\Enabled;
  8. use Magento\Analytics\Model\Config\Backend\Enabled\SubscriptionHandler;
  9. use Magento\Framework\App\Config\ScopeConfigInterface;
  10. use Magento\Framework\App\Config\Value;
  11. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  12. use Psr\Log\LoggerInterface;
  13. class EnabledTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /**
  16. * @var SubscriptionHandler|\PHPUnit_Framework_MockObject_MockObject
  17. */
  18. private $subscriptionHandlerMock;
  19. /**
  20. * @var LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
  21. */
  22. private $loggerMock;
  23. /**
  24. * @var Value|\PHPUnit_Framework_MockObject_MockObject
  25. */
  26. private $configMock;
  27. /**
  28. * @var ObjectManagerHelper
  29. */
  30. private $objectManagerHelper;
  31. /**
  32. * @var Enabled
  33. */
  34. private $enabledModel;
  35. /**
  36. * @var int
  37. */
  38. private $valueEnabled = 1;
  39. /**
  40. * @var int
  41. */
  42. private $valueDisabled = 0;
  43. /**
  44. * @return void
  45. */
  46. protected function setUp()
  47. {
  48. $this->subscriptionHandlerMock = $this->getMockBuilder(SubscriptionHandler::class)
  49. ->disableOriginalConstructor()
  50. ->getMock();
  51. $this->loggerMock = $this->getMockBuilder(LoggerInterface::class)
  52. ->disableOriginalConstructor()
  53. ->getMock();
  54. $this->configMock = $this->getMockBuilder(ScopeConfigInterface::class)
  55. ->disableOriginalConstructor()
  56. ->getMock();
  57. $this->objectManagerHelper = new ObjectManagerHelper($this);
  58. $this->enabledModel = $this->objectManagerHelper->getObject(
  59. Enabled::class,
  60. [
  61. 'subscriptionHandler' => $this->subscriptionHandlerMock,
  62. '_logger' => $this->loggerMock,
  63. 'config' => $this->configMock,
  64. ]
  65. );
  66. }
  67. /**
  68. * @return void
  69. */
  70. public function testAfterSaveSuccessEnabled()
  71. {
  72. $this->enabledModel->setData('value', $this->valueEnabled);
  73. $this->configMock
  74. ->expects($this->any())
  75. ->method('getValue')
  76. ->willReturn(!$this->valueEnabled);
  77. $this->subscriptionHandlerMock
  78. ->expects($this->once())
  79. ->method('processEnabled')
  80. ->with()
  81. ->willReturn(true);
  82. $this->assertInstanceOf(
  83. Value::class,
  84. $this->enabledModel->afterSave()
  85. );
  86. }
  87. /**
  88. * @return void
  89. */
  90. public function testAfterSaveSuccessDisabled()
  91. {
  92. $this->enabledModel->setData('value', $this->valueDisabled);
  93. $this->configMock
  94. ->expects($this->any())
  95. ->method('getValue')
  96. ->willReturn(!$this->valueDisabled);
  97. $this->subscriptionHandlerMock
  98. ->expects($this->once())
  99. ->method('processDisabled')
  100. ->with()
  101. ->willReturn(true);
  102. $this->assertInstanceOf(
  103. Value::class,
  104. $this->enabledModel->afterSave()
  105. );
  106. }
  107. /**
  108. * @return void
  109. */
  110. public function testAfterSaveSuccessValueNotChanged()
  111. {
  112. $this->enabledModel->setData('value', null);
  113. $this->configMock
  114. ->expects($this->any())
  115. ->method('getValue')
  116. ->willReturn(null);
  117. $this->subscriptionHandlerMock
  118. ->expects($this->never())
  119. ->method('processEnabled')
  120. ->with()
  121. ->willReturn(true);
  122. $this->subscriptionHandlerMock
  123. ->expects($this->never())
  124. ->method('processDisabled')
  125. ->with()
  126. ->willReturn(true);
  127. $this->assertInstanceOf(
  128. Value::class,
  129. $this->enabledModel->afterSave()
  130. );
  131. }
  132. /**
  133. * @return void
  134. * @expectedException \Magento\Framework\Exception\LocalizedException
  135. */
  136. public function testExecuteAfterSaveFailedWithLocalizedException()
  137. {
  138. $exception = new \Exception('Message');
  139. $this->enabledModel->setData('value', $this->valueEnabled);
  140. $this->subscriptionHandlerMock
  141. ->expects($this->once())
  142. ->method('processEnabled')
  143. ->with()
  144. ->willThrowException($exception);
  145. $this->loggerMock
  146. ->expects($this->once())
  147. ->method('error')
  148. ->with($exception->getMessage());
  149. $this->enabledModel->afterSave();
  150. }
  151. }