Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SubscriptionUpdateHandlerTest.php
Go to the documentation of this file.
1 <?php
8 
15 
16 class SubscriptionUpdateHandlerTest extends \PHPUnit\Framework\TestCase
17 {
21  private $analyticsTokenMock;
22 
26  private $flagManagerMock;
27 
31  private $reinitableConfigMock;
32 
36  private $configWriterMock;
37 
41  private $objectManagerHelper;
42 
46  private $subscriptionUpdateHandler;
47 
51  private $attemptsInitValue = 48;
52 
56  private $cronExpression = '0 * * * *';
57 
61  protected function setUp()
62  {
63  $this->reinitableConfigMock = $this->getMockBuilder(ReinitableConfigInterface::class)
64  ->disableOriginalConstructor()
65  ->getMockForAbstractClass();
66 
67  $this->analyticsTokenMock = $this->getMockBuilder(AnalyticsToken::class)
68  ->disableOriginalConstructor()
69  ->getMock();
70 
71  $this->flagManagerMock = $this->getMockBuilder(FlagManager::class)
72  ->disableOriginalConstructor()
73  ->getMock();
74 
75  $this->configWriterMock = $this->getMockBuilder(WriterInterface::class)
76  ->disableOriginalConstructor()
77  ->getMockForAbstractClass();
78 
79  $this->objectManagerHelper = new ObjectManagerHelper($this);
80 
81  $this->subscriptionUpdateHandler = $this->objectManagerHelper->getObject(
82  SubscriptionUpdateHandler::class,
83  [
84  'reinitableConfig' => $this->reinitableConfigMock,
85  'analyticsToken' => $this->analyticsTokenMock,
86  'flagManager' => $this->flagManagerMock,
87  'configWriter' => $this->configWriterMock,
88  ]
89  );
90  }
91 
95  public function testTokenDoesNotExist()
96  {
97  $this->analyticsTokenMock
98  ->expects($this->once())
99  ->method('isTokenExist')
100  ->with()
101  ->willReturn(false);
102  $this->flagManagerMock
103  ->expects($this->never())
104  ->method('saveFlag');
105  $this->configWriterMock
106  ->expects($this->never())
107  ->method('save');
108  $this->assertTrue($this->subscriptionUpdateHandler->processUrlUpdate('http://store.com'));
109  }
110 
115  {
116  $url = 'https://store.com';
117  $this->analyticsTokenMock
118  ->expects($this->once())
119  ->method('isTokenExist')
120  ->with()
121  ->willReturn(true);
122  $this->flagManagerMock
123  ->expects($this->once())
124  ->method('getFlagData')
126  ->willReturn(true);
127  $this->flagManagerMock
128  ->expects($this->once())
129  ->method('saveFlag')
130  ->withConsecutive(
133  );
134  $this->configWriterMock
135  ->expects($this->once())
136  ->method('save')
137  ->with(SubscriptionUpdateHandler::UPDATE_CRON_STRING_PATH, $this->cronExpression);
138  $this->reinitableConfigMock
139  ->expects($this->once())
140  ->method('reinit')
141  ->with();
142  $this->assertTrue($this->subscriptionUpdateHandler->processUrlUpdate($url));
143  }
144 
149  {
150  $url = 'https://store.com';
151  $this->analyticsTokenMock
152  ->expects($this->once())
153  ->method('isTokenExist')
154  ->with()
155  ->willReturn(true);
156  $this->flagManagerMock
157  ->expects($this->once())
158  ->method('getFlagData')
160  ->willReturn(false);
161  $this->flagManagerMock
162  ->expects($this->exactly(2))
163  ->method('saveFlag')
164  ->withConsecutive(
167  );
168  $this->configWriterMock
169  ->expects($this->once())
170  ->method('save')
171  ->with(SubscriptionUpdateHandler::UPDATE_CRON_STRING_PATH, $this->cronExpression);
172  $this->reinitableConfigMock
173  ->expects($this->once())
174  ->method('reinit')
175  ->with();
176  $this->assertTrue($this->subscriptionUpdateHandler->processUrlUpdate($url));
177  }
178 }