FlagManagerTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Test\Unit;
  7. use Magento\Framework\FlagFactory;
  8. use Magento\Framework\Flag\FlagResource;
  9. use Magento\Framework\Flag;
  10. use Magento\Framework\FlagManager;
  11. use \PHPUnit_Framework_MockObject_MockObject as Mock;
  12. /**
  13. * Class FlagManagerTest
  14. */
  15. class FlagManagerTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * @var FlagFactory|Mock
  19. */
  20. private $flagFactoryMock;
  21. /**
  22. * @var Flag|Mock
  23. */
  24. private $flagMock;
  25. /**
  26. * @var FlagResource|Mock
  27. */
  28. private $flagResourceMock;
  29. /**
  30. * @var FlagManager
  31. */
  32. private $flagManager;
  33. /**
  34. * @inheritdoc
  35. */
  36. protected function setUp()
  37. {
  38. $this->flagFactoryMock = $this->getMockBuilder(FlagFactory::class)
  39. ->disableOriginalConstructor()
  40. ->getMock();
  41. $this->flagResourceMock = $this->getMockBuilder(FlagResource::class)
  42. ->disableOriginalConstructor()
  43. ->getMock();
  44. $this->flagMock = $this->getMockBuilder(Flag::class)
  45. ->disableOriginalConstructor()
  46. ->getMock();
  47. $this->flagManager = new FlagManager(
  48. $this->flagFactoryMock,
  49. $this->flagResourceMock
  50. );
  51. }
  52. public function testGetFlagData()
  53. {
  54. $flagCode = 'flag';
  55. $this->setupFlagObject($flagCode);
  56. $this->flagMock->expects($this->once())
  57. ->method('getFlagData')
  58. ->willReturn(10);
  59. $this->assertEquals($this->flagManager->getFlagData($flagCode), 10);
  60. }
  61. public function testSaveFlag()
  62. {
  63. $flagCode = 'flag';
  64. $this->setupFlagObject($flagCode);
  65. $this->flagMock->expects($this->once())
  66. ->method('setFlagData')
  67. ->with(10);
  68. $this->flagResourceMock->expects($this->once())
  69. ->method('save')
  70. ->with($this->flagMock);
  71. $this->assertTrue(
  72. $this->flagManager->saveFlag($flagCode, 10)
  73. );
  74. }
  75. /**
  76. * @dataProvider flagExistDataProvider
  77. *
  78. * @param bool $isFlagExist
  79. */
  80. public function testDeleteFlag($isFlagExist)
  81. {
  82. $flagCode = 'flag';
  83. $this->setupFlagObject($flagCode);
  84. $this->flagMock
  85. ->expects($this->once())
  86. ->method('getId')
  87. ->willReturn($isFlagExist);
  88. if ($isFlagExist) {
  89. $this->flagResourceMock
  90. ->expects($this->once())
  91. ->method('delete')
  92. ->with($this->flagMock);
  93. }
  94. $this->assertTrue(
  95. $this->flagManager->deleteFlag($flagCode)
  96. );
  97. }
  98. /**
  99. * @param $flagCode
  100. */
  101. private function setupFlagObject($flagCode)
  102. {
  103. $this->flagFactoryMock->expects($this->once())
  104. ->method('create')
  105. ->with(['data' => ['flag_code' => $flagCode]])
  106. ->willReturn($this->flagMock);
  107. $this->flagResourceMock->expects($this->once())
  108. ->method('load')
  109. ->with($this->flagMock, $flagCode, 'flag_code');
  110. }
  111. /**
  112. * Provide variations of the flag existence.
  113. *
  114. * @return array
  115. */
  116. public function flagExistDataProvider()
  117. {
  118. return [
  119. [true],
  120. [false]
  121. ];
  122. }
  123. }