Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GroupedProductDataProviderTest.php
Go to the documentation of this file.
1 <?php
7 
12 use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
14 
15 class GroupedProductDataProviderTest extends \PHPUnit\Framework\TestCase
16 {
17  const ALLOWED_TYPE = 'simple';
18 
22  protected $objectManager;
23 
27  protected $requestMock;
28 
33 
37  protected $collectionMock;
38 
42  protected $configMock;
43 
47  protected function setUp()
48  {
49  $this->objectManager = new ObjectManager($this);
50 
51  $this->requestMock = $this->getMockBuilder(RequestInterface::class)
52  ->getMockForAbstractClass();
53  $this->collectionMock = $this->getMockBuilder(Collection::class)
54  ->disableOriginalConstructor()
55  ->setMethods(
56  [
57  'toArray',
58  'isLoaded',
59  'addAttributeToFilter',
60  'load',
61  'getSize',
62  'addFilterByRequiredOptions',
63  'addStoreFilter'
64  ]
65  )->getMock();
66  $this->collectionFactoryMock = $this->getMockBuilder(CollectionFactory::class)
67  ->disableOriginalConstructor()
68  ->setMethods(['create'])
69  ->getMock();
70  $this->collectionFactoryMock->expects($this->any())
71  ->method('create')
72  ->willReturn($this->collectionMock);
73  $this->configMock = $this->getMockBuilder(ConfigInterface::class)
74  ->setMethods(['getComposableTypes'])
75  ->getMockForAbstractClass();
76  }
77 
81  protected function getModel()
82  {
83  return $this->objectManager->getObject(GroupedProductDataProvider::class, [
84  'name' => 'testName',
85  'primaryFieldName' => 'testPrimaryFieldName',
86  'requestFieldName' => 'testRequestFieldName',
87  'collectionFactory' => $this->collectionFactoryMock,
88  'request' => $this->requestMock,
89  'config' => $this->configMock,
90  'addFieldStrategies' => [],
91  'addFilterStrategies' => [],
92  'meta' => [],
93  'data' => [],
94  ]);
95  }
96 
97  public function testGetData()
98  {
99  $items = ['testProduct1', 'testProduct2'];
100  $expectedData = [
101  'totalRecords' => count($items),
102  'items' => $items,
103  ];
104 
105  $this->configMock->expects($this->once())
106  ->method('getComposableTypes')
107  ->willReturn([self::ALLOWED_TYPE]);
108  $this->collectionMock->expects($this->once())
109  ->method('isLoaded')
110  ->willReturn(false);
111  $this->collectionMock->expects($this->once())
112  ->method('addAttributeToFilter')
113  ->with('type_id', [self::ALLOWED_TYPE]);
114  $this->collectionMock->expects($this->once())
115  ->method('toArray')
116  ->willReturn($items);
117  $this->collectionMock->expects($this->once())
118  ->method('getSize')
119  ->willReturn(count($items));
120 
121  $this->assertEquals($expectedData, $this->getModel()->getData());
122  }
123 
124  public function testGetCollection()
125  {
126  $this->assertInstanceOf(Collection::class, $this->getModel()->getCollection());
127  }
128 }
$items