Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FilterAssemblerTest.php
Go to the documentation of this file.
1 <?php
7 
11 class FilterAssemblerTest extends \PHPUnit\Framework\TestCase
12 {
16  private $subject;
17 
21  private $nameResolverMock;
22 
26  private $selectBuilderMock;
27 
31  private $objectManagerHelper;
32 
36  private $conditionResolverMock;
37 
41  protected function setUp()
42  {
43  $this->nameResolverMock = $this->getMockBuilder(
44  \Magento\Analytics\ReportXml\DB\NameResolver::class
45  )
46  ->disableOriginalConstructor()
47  ->getMock();
48 
49  $this->selectBuilderMock = $this->getMockBuilder(
50  \Magento\Analytics\ReportXml\DB\SelectBuilder::class
51  )
52  ->disableOriginalConstructor()
53  ->getMock();
54  $this->selectBuilderMock->expects($this->any())
55  ->method('getFilters')
56  ->willReturn([]);
57 
58  $this->conditionResolverMock = $this->getMockBuilder(
59  \Magento\Analytics\ReportXml\DB\ConditionResolver::class
60  )
61  ->disableOriginalConstructor()
62  ->getMock();
63 
64  $this->objectManagerHelper =
65  new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
66 
67  $this->subject = $this->objectManagerHelper->getObject(
68  \Magento\Analytics\ReportXml\DB\Assembler\FilterAssembler::class,
69  [
70  'conditionResolver' => $this->conditionResolverMock,
71  'nameResolver' => $this->nameResolverMock
72  ]
73  );
74  }
75 
79  public function testAssembleEmpty()
80  {
81  $queryConfigMock = [
82  'source' => [
83  'name' => 'sales_order',
84  'alias' => 'sales'
85  ]
86  ];
87 
88  $this->selectBuilderMock->expects($this->never())
89  ->method('setFilters');
90 
91  $this->assertEquals(
92  $this->selectBuilderMock,
93  $this->subject->assemble($this->selectBuilderMock, $queryConfigMock)
94  );
95  }
96 
100  public function testAssembleNotEmpty()
101  {
102  $queryConfigMock = [
103  'source' => [
104  'name' => 'sales_order',
105  'alias' => 'sales',
106  'filter' => [
107  [
108  'glue' => 'and',
109  'condition' => [
110  [
111  'attribute' => 'entity_id',
112  'operator' => 'null'
113  ]
114  ]
115  ]
116  ]
117  ]
118  ];
119 
120  $this->nameResolverMock->expects($this->any())
121  ->method('getAlias')
122  ->with($queryConfigMock['source'])
123  ->willReturn($queryConfigMock['source']['alias']);
124 
125  $this->conditionResolverMock->expects($this->once())
126  ->method('getFilter')
127  ->with(
128  $this->selectBuilderMock,
129  $queryConfigMock['source']['filter'],
130  $queryConfigMock['source']['alias']
131  )
132  ->willReturn('(sales.entity_id IS NULL)');
133 
134  $this->selectBuilderMock->expects($this->once())
135  ->method('setFilters')
136  ->with(['(sales.entity_id IS NULL)']);
137 
138  $this->assertEquals(
139  $this->selectBuilderMock,
140  $this->subject->assemble($this->selectBuilderMock, $queryConfigMock)
141  );
142  }
143 }