Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ReportProductSavedTest.php
Go to the documentation of this file.
1 <?php
7 
9 
13 class ReportProductSavedTest extends \PHPUnit\Framework\TestCase
14 {
18  protected $model;
19 
23  protected $config;
24 
28  protected $systemFactory;
29 
33  protected $systemModel;
34 
38  protected $jsonEncoder;
39 
45  protected function setUp()
46  {
47  $this->config = $this->getMockBuilder(\Magento\NewRelicReporting\Model\Config::class)
48  ->disableOriginalConstructor()
49  ->setMethods(['isNewRelicEnabled'])
50  ->getMock();
51  $this->systemFactory = $this->getMockBuilder(\Magento\NewRelicReporting\Model\SystemFactory::class)
52  ->disableOriginalConstructor()
53  ->setMethods(['create'])
54  ->getMock();
55  $this->systemModel = $this->getMockBuilder(\Magento\NewRelicReporting\Model\System::class)
56  ->disableOriginalConstructor()
57  ->getMock();
58  $this->jsonEncoder = $this->getMockBuilder(\Magento\Framework\Json\EncoderInterface::class)
59  ->getMock();
60  $this->systemFactory->expects($this->any())
61  ->method('create')
62  ->willReturn($this->systemModel);
63 
64  $this->model = new ReportProductSaved(
65  $this->config,
66  $this->systemFactory,
67  $this->jsonEncoder
68  );
69  }
70 
76  public function testReportProductSavedModuleDisabledFromConfig()
77  {
79  $eventObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
80  ->disableOriginalConstructor()
81  ->getMock();
82  $this->config->expects($this->once())
83  ->method('isNewRelicEnabled')
84  ->willReturn(false);
85 
86  $this->model->execute($eventObserver);
87  }
88 
94  public function testReportProductSaved()
95  {
96  $testType = 'adminProductChange';
97  $testAction = 'JSON string';
98 
100  $eventObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
101  ->disableOriginalConstructor()
102  ->getMock();
103  $this->config->expects($this->once())
104  ->method('isNewRelicEnabled')
105  ->willReturn(true);
106  $event = $this->getMockBuilder(\Magento\Framework\Event::class)
107  ->setMethods(['getProduct'])
108  ->disableOriginalConstructor()
109  ->getMock();
110  $eventObserver->expects($this->once())
111  ->method('getEvent')
112  ->willReturn($event);
114  $product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
115  ->setMethods(['getId'])
116  ->disableOriginalConstructor()
117  ->getMock();
118  $product->isObjectNew(true);
119  $event->expects($this->once())
120  ->method('getProduct')
121  ->willReturn($product);
122  $this->jsonEncoder->expects($this->once())
123  ->method('encode')
124  ->willReturn($testAction);
125  $this->systemModel->expects($this->once())
126  ->method('setData')
127  ->with(['type' => $testType, 'action' => $testAction])
128  ->willReturnSelf();
129  $this->systemModel->expects($this->once())
130  ->method('save');
131 
132  $this->model->execute($eventObserver);
133  }
134 
140  public function testReportProductUpdated()
141  {
142  $testType = 'adminProductChange';
143  $testAction = 'JSON string';
144 
146  $eventObserver = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
147  ->disableOriginalConstructor()
148  ->getMock();
149  $this->config->expects($this->once())
150  ->method('isNewRelicEnabled')
151  ->willReturn(true);
152  $event = $this->getMockBuilder(\Magento\Framework\Event::class)
153  ->setMethods(['getProduct'])
154  ->disableOriginalConstructor()
155  ->getMock();
156  $eventObserver->expects($this->once())
157  ->method('getEvent')
158  ->willReturn($event);
160  $product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
161  ->setMethods(['getId'])
162  ->disableOriginalConstructor()
163  ->getMock();
164  $product->isObjectNew(false);
165  $event->expects($this->once())
166  ->method('getProduct')
167  ->willReturn($product);
168  $this->jsonEncoder->expects($this->once())
169  ->method('encode')
170  ->willReturn($testAction);
171  $this->systemModel->expects($this->once())
172  ->method('setData')
173  ->with(['type' => $testType, 'action' => $testAction])
174  ->willReturnSelf();
175  $this->systemModel->expects($this->once())
176  ->method('save');
177 
178  $this->model->execute($eventObserver);
179  }
180 }