Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
IndexStructureFactoryTest.php
Go to the documentation of this file.
1 <?php
7 
12 
13 class IndexStructureFactoryTest extends \PHPUnit\Framework\TestCase
14 {
16  private $model;
17 
19  private $objectManagerMock;
20 
22  private $engineResolverMock;
23 
24  protected function setUp()
25  {
26  $this->objectManagerMock = $this->getMockBuilder(ObjectManagerInterface::class)
27  ->getMockForAbstractClass();
28  $this->engineResolverMock = $this->getMockBuilder(EngineResolverInterface::class)
29  ->getMockForAbstractClass();
30  }
31 
32  public function testCreate()
33  {
34  $currentStructure = 'current_structure';
35  $currentStructureClass = IndexStructureInterface::class;
36  $structures = [
37  $currentStructure => $currentStructureClass,
38  ];
39  $data = ['data'];
40 
41  $this->engineResolverMock->expects($this->once())
42  ->method('getCurrentSearchEngine')
43  ->willReturn($currentStructure);
44 
45  $indexerStructureMock = $this->getMockBuilder($currentStructureClass)
46  ->getMockForAbstractClass();
47 
48  $this->objectManagerMock->expects($this->once())
49  ->method('create')
50  ->with($currentStructureClass, $data)
51  ->willReturn($indexerStructureMock);
52 
53  $this->model = new IndexStructureFactory(
54  $this->objectManagerMock,
55  $this->engineResolverMock,
56  $structures
57  );
58 
59  $this->assertEquals($indexerStructureMock, $this->model->create($data));
60  }
61 
66  public function testCreateWithoutStructures()
67  {
68  $currentStructure = 'current_structure';
69  $structures = [];
70  $data = ['data'];
71 
72  $this->engineResolverMock->expects($this->once())
73  ->method('getCurrentSearchEngine')
74  ->willReturn($currentStructure);
75 
76  $this->model = new IndexStructureFactory(
77  $this->objectManagerMock,
78  $this->engineResolverMock,
79  $structures
80  );
81 
82  $this->model->create($data);
83  }
84 
89  public function testCreateWithWrongStructure()
90  {
91  $currentStructure = 'current_structure';
92  $currentStructureClass = \stdClass::class;
93  $structures = [
94  $currentStructure => $currentStructureClass,
95  ];
96  $data = ['data'];
97 
98  $this->engineResolverMock->expects($this->once())
99  ->method('getCurrentSearchEngine')
100  ->willReturn($currentStructure);
101 
102  $indexerStructureMock = $this->getMockBuilder($currentStructureClass)
103  ->getMockForAbstractClass();
104 
105  $this->objectManagerMock->expects($this->once())
106  ->method('create')
107  ->with($currentStructureClass, $data)
108  ->willReturn($indexerStructureMock);
109 
110  $this->model = new IndexStructureFactory(
111  $this->objectManagerMock,
112  $this->engineResolverMock,
113  $structures
114  );
115 
116  $this->model->create($data);
117  }
118 }