Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ComparedTest.php
Go to the documentation of this file.
1 <?php
8 
10 
14 class ComparedTest extends \PHPUnit\Framework\TestCase
15 {
19  protected $compared;
20 
24  protected $contextMock;
25 
29  protected $registryMock;
30 
34  protected $storeManagerMock;
35 
39  protected $visitorMock;
40 
44  protected $sessionMock;
45 
49  protected $genericMock;
50 
54  protected $visibilityMock;
55 
59  protected $dateTimeMock;
60 
65 
69  protected $resourceMock;
70 
74  protected $dbMock;
75 
79  protected function setUp()
80  {
81  $this->contextMock = $this->getMockBuilder(\Magento\Framework\Model\Context::class)
82  ->disableOriginalConstructor()
83  ->getMock();
84  $this->registryMock = $this->getMockBuilder(\Magento\Framework\Registry::class)
85  ->getMock();
86  $this->storeManagerMock = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
87  ->getMock();
88  $this->visitorMock = $this->getMockBuilder(\Magento\Customer\Model\Visitor::class)
89  ->disableOriginalConstructor()
90  ->getMock();
91  $this->sessionMock = $this->getMockBuilder(\Magento\Customer\Model\Session::class)
92  ->disableOriginalConstructor()
93  ->getMock();
94  $this->genericMock = $this->getMockBuilder(\Magento\Framework\Session\Generic::class)
95  ->disableOriginalConstructor()
96  ->getMock();
97  $this->visibilityMock = $this->getMockBuilder(\Magento\Catalog\Model\Product\Visibility::class)
98  ->disableOriginalConstructor()
99  ->getMock();
100  $this->dateTimeMock = $this->getMockBuilder(\Magento\Framework\Stdlib\DateTime::class)
101  ->getMock();
102  $this->catalogProductHelperMock = $this->getMockBuilder(\Magento\Catalog\Helper\Product\Compare::class)
103  ->disableOriginalConstructor()
104  ->getMock();
105 
106  $this->resourceMock = $this->getMockBuilder(\Magento\Framework\Model\ResourceModel\AbstractResource::class)
107  ->disableOriginalConstructor()
108  ->setMethods(['getIdFieldName', '_construct', 'getConnection'])
109  ->getMockForAbstractClass();
110  $this->dbMock = $this->getMockBuilder(\Magento\Framework\Data\Collection\AbstractDb::class)
111  ->disableOriginalConstructor()
112  ->getMock();
113 
114  $this->compared = new Compared(
115  $this->contextMock,
116  $this->registryMock,
117  $this->storeManagerMock,
118  $this->visitorMock,
119  $this->sessionMock,
120  $this->genericMock,
121  $this->visibilityMock,
122  $this->dateTimeMock,
123  $this->catalogProductHelperMock,
124  $this->resourceMock,
125  $this->dbMock
126  );
127  }
128 
132  public function testGetExcludeProductIds()
133  {
134  $collection = $this->getMockBuilder(\Magento\Catalog\Model\ResourceModel\Product\Compare\Item\Collection::class)
135  ->disableOriginalConstructor()
136  ->setMethods(['getEntityId'])
137  ->getMock();
138  $collection->expects($this->once())->method('getEntityId')->willReturn(1);
139 
140  $product = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
141  ->disableOriginalConstructor()
142  ->setMethods(['getId'])
143  ->getMock();
144  $product->expects($this->once())->method('getId')->willReturn(2);
145 
146  $this->catalogProductHelperMock->expects($this->once())->method('hasItems')->willReturn(true);
147  $this->catalogProductHelperMock->expects($this->once())->method('getItemCollection')->willReturn([$collection]);
148 
149  $this->registryMock->expects($this->any())->method('registry')->willReturn($product);
150 
151  $this->assertEquals([1, 2], $this->compared->getExcludeProductIds());
152  }
153 }