Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ProductViewCounterTest.php
Go to the documentation of this file.
1 <?php
8 
11 use Magento\Catalog\Model\ProductRenderFactory;
22 
26 class ProductViewCounterTest extends \PHPUnit\Framework\TestCase
27 {
31  private $productViewCounter;
32 
36  private $contextMock;
37 
41  private $productRepositoryMock;
42 
46  private $productRenderCollectorCompositeMock;
47 
51  private $hydratorMock;
52 
56  private $serializeMock;
57 
61  private $urlMock;
62 
66  private $registryMock;
67 
71  private $storeManagerMock;
72 
76  private $productRenderFactoryMock;
77 
78  protected function setUp()
79  {
80  $this->contextMock = $this->getMockBuilder(Context::class)
81  ->disableOriginalConstructor()
82  ->getMock();
83  $this->productRepositoryMock = $this->getMockBuilder(ProductRepository::class)
84  ->disableOriginalConstructor()
85  ->getMock();
86  $this->productRenderCollectorCompositeMock = $this->getMockBuilder(ProductRenderCollectorComposite::class)
87  ->disableOriginalConstructor()
88  ->getMock();
89  $this->productRenderFactoryMock = $this->getMockBuilder(ProductRenderFactory::class)
90  ->disableOriginalConstructor()
91  ->getMock();
92  $this->hydratorMock = $this->getMockBuilder(Hydrator::class)
93  ->disableOriginalConstructor()
94  ->getMock();
95  $this->serializeMock = $this->getMockBuilder(SerializerInterface::class)
96  ->disableOriginalConstructor()
97  ->getMockForAbstractClass();
98  $this->urlMock = $this->getMockBuilder(Url::class)
99  ->disableOriginalConstructor()
100  ->getMock();
101  $this->registryMock = $this->getMockBuilder(Registry::class)
102  ->disableOriginalConstructor()
103  ->getMock();
104  $this->storeManagerMock = $this->getMockBuilder(StoreManager::class)
105  ->disableOriginalConstructor()
106  ->getMock();
107 
108  $this->productViewCounter = new ProductViewCounter(
109  $this->contextMock,
110  $this->productRepositoryMock,
111  $this->productRenderCollectorCompositeMock,
112  $this->storeManagerMock,
113  $this->productRenderFactoryMock,
114  $this->hydratorMock,
115  $this->serializeMock,
116  $this->urlMock,
117  $this->registryMock
118  );
119  }
120 
122  {
123  $productMock = $this->getMockBuilder(ProductInterface::class)
124  ->disableOriginalConstructor()
125  ->getMockForAbstractClass();
126 
127  $storeMock = $this->getMockBuilder(Store::class)
128  ->disableOriginalConstructor()
129  ->getMock();
130 
131  $this->registryMock->expects($this->once())
132  ->method('registry')
133  ->with('product')
134  ->willReturn($productMock);
135 
136  $this->storeManagerMock->expects($this->once())
137  ->method('getStore')
138  ->willReturn($storeMock);
139  $storeMock->expects($this->once())
140  ->method('getId')
141  ->willReturn(1);
142  $storeMock->expects($this->once())
143  ->method('getCurrentCurrency')
144  ->willReturn($storeMock);
145  $storeMock->expects($this->once())
146  ->method('getCode')
147  ->willReturn('USD');
148 
149  $this->productViewCounter->getCurrentProductData();
150  }
151 
153  {
154  $productMock = $this->getMockBuilder(ProductInterface::class)
155  ->disableOriginalConstructor()
156  ->getMockForAbstractClass();
157  $productRendererMock = $this->getMockBuilder(ProductRenderInterface::class)
158  ->disableOriginalConstructor()
159  ->getMockForAbstractClass();
160  $storeMock = $this->getMockBuilder(Store::class)
161  ->disableOriginalConstructor()
162  ->getMock();
163 
164  $this->registryMock->expects($this->once())
165  ->method('registry')
166  ->with('product')
167  ->willReturn($productMock);
168  $this->productRenderFactoryMock->expects($this->once())
169  ->method('create')
170  ->willReturn($productRendererMock);
171  $productMock->expects($this->exactly(2))
172  ->method('getId')
173  ->willReturn(123);
174  $this->productRenderCollectorCompositeMock->expects($this->once())
175  ->method('collect')
176  ->with($productMock, $productRendererMock);
177  $this->storeManagerMock->expects($this->once())
178  ->method('getStore')
179  ->willReturn($storeMock);
180  $storeMock->expects($this->exactly(2))
181  ->method('getId')
182  ->willReturn(1);
183  $storeMock->expects($this->once())
184  ->method('getCurrentCurrency')
185  ->willReturn($storeMock);
186  $storeMock->expects($this->once())
187  ->method('getCode')
188  ->willReturn('USD');
189 
190  $this->productViewCounter->getCurrentProductData();
191  }
192 }