Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ReportConcurrentUsersTest.php
Go to the documentation of this file.
1 <?php
7 
9 
15 class ReportConcurrentUsersTest extends \PHPUnit\Framework\TestCase
16 {
20  protected $model;
21 
25  protected $config;
26 
30  protected $customerSession;
31 
36 
40  protected $storeManager;
41 
45  protected $usersFactory;
46 
50  protected $usersModel;
51 
55  protected $jsonEncoder;
56 
62  protected function setUp()
63  {
64  $this->config = $this->getMockBuilder(\Magento\NewRelicReporting\Model\Config::class)
65  ->disableOriginalConstructor()
66  ->setMethods(['isNewRelicEnabled'])
67  ->getMock();
68  $this->customerSession = $this->getMockBuilder(\Magento\Customer\Model\Session::class)
69  ->disableOriginalConstructor()
70  ->setMethods(['isLoggedIn', 'getCustomerId'])
71  ->getMock();
72  $this->customerRepository = $this->getMockBuilder(\Magento\Customer\Api\CustomerRepositoryInterface::class)
73  ->getMock();
74  $this->storeManager = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
75  ->getMock();
76  $this->usersFactory = $this->getMockBuilder(\Magento\NewRelicReporting\Model\UsersFactory::class)
77  ->disableOriginalConstructor()
78  ->setMethods(['create'])
79  ->getMock();
80  $this->usersModel = $this->getMockBuilder(\Magento\NewRelicReporting\Model\Users::class)
81  ->disableOriginalConstructor()
82  ->getMock();
83  $this->jsonEncoder = $this->getMockBuilder(\Magento\Framework\Json\EncoderInterface::class)
84  ->getMock();
85 
86  $this->usersFactory->expects($this->any())
87  ->method('create')
88  ->willReturn($this->usersModel);
89 
90  $this->model = new ReportConcurrentUsers(
91  $this->config,
92  $this->customerSession,
93  $this->customerRepository,
94  $this->storeManager,
95  $this->usersFactory,
96  $this->jsonEncoder
97  );
98  }
99 
105  public function testReportConcurrentUsersModuleDisabledFromConfig()
106  {
108  $eventObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
109  ->disableOriginalConstructor()
110  ->getMock();
111 
112  $this->config->expects($this->once())
113  ->method('isNewRelicEnabled')
114  ->willReturn(false);
115 
116  $this->model->execute($eventObserver);
117  }
118 
124  public function testReportConcurrentUsersUserIsNotLoggedIn()
125  {
127  $eventObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
128  ->disableOriginalConstructor()
129  ->getMock();
130 
131  $this->config->expects($this->once())
132  ->method('isNewRelicEnabled')
133  ->willReturn(true);
134  $this->customerSession->expects($this->once())
135  ->method('isLoggedIn')
136  ->willReturn(false);
137 
138  $this->model->execute($eventObserver);
139  }
140 
146  public function testReportConcurrentUsers()
147  {
148  $testCustomerId = 1;
149  $testAction = 'JSON string';
150 
152  $eventObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
153  ->disableOriginalConstructor()
154  ->getMock();
155 
156  $this->config->expects($this->once())
157  ->method('isNewRelicEnabled')
158  ->willReturn(true);
159  $this->customerSession->expects($this->once())
160  ->method('isLoggedIn')
161  ->willReturn(true);
162  $this->customerSession->expects($this->once())
163  ->method('getCustomerId')
164  ->willReturn($testCustomerId);
165  $customerMock = $this->getMockBuilder(\Magento\Customer\Api\Data\CustomerInterface::class)->getMock();
166  $this->customerRepository->expects($this->once())
167  ->method('getById')
168  ->willReturn($customerMock);
169  $storeMock = $this->getMockBuilder(\Magento\Store\Model\Store::class)->disableOriginalConstructor()->getMock();
170  $this->storeManager->expects($this->once())
171  ->method('getStore')
172  ->willReturn($storeMock);
173  $websiteMock = $this->getMockBuilder(
174  \Magento\Store\Model\Website::class
175  )->disableOriginalConstructor()->getMock();
176  $this->storeManager->expects($this->once())
177  ->method('getWebsite')
178  ->willReturn($websiteMock);
179  $this->jsonEncoder->expects($this->once())
180  ->method('encode')
181  ->willReturn($testAction);
182  $this->usersModel->expects($this->once())
183  ->method('setData')
184  ->with(['type' => 'user_action', 'action' => $testAction])
185  ->willReturnSelf();
186  $this->usersModel->expects($this->once())
187  ->method('save');
188 
189  $this->model->execute($eventObserver);
190  }
191 }