Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ConfigurableProductHandlerTest.php
Go to the documentation of this file.
1 <?php
8 
12 
16 class ConfigurableProductHandlerTest extends \PHPUnit\Framework\TestCase
17 {
21  private $configurableProductHandler;
22 
26  private $configurableMock;
27 
31  private $configurableProductsProviderMock;
32 
34  private $ruleMock;
35 
39  protected function setUp()
40  {
41  $this->configurableMock = $this->createPartialMock(
42  \Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable::class,
43  ['getChildrenIds']
44  );
45  $this->configurableProductsProviderMock = $this->createPartialMock(
46  \Magento\CatalogRuleConfigurable\Plugin\CatalogRule\Model\ConfigurableProductsProvider::class,
47  ['getIds']
48  );
49  $this->ruleMock = $this->createMock(\Magento\CatalogRule\Model\Rule::class);
50 
51  $this->configurableProductHandler = new ConfigurableProductHandler(
52  $this->configurableMock,
53  $this->configurableProductsProviderMock
54  );
55  }
56 
61  {
62  $this->configurableProductsProviderMock->expects($this->once())->method('getIds')->willReturn([]);
63  $this->configurableMock->expects($this->never())->method('getChildrenIds');
64 
65  $productIds = ['product' => 'valid results'];
66  $this->assertEquals(
68  $this->configurableProductHandler->afterGetMatchingProductIds($this->ruleMock, $productIds)
69  );
70  }
71 
76  {
77  $this->configurableProductsProviderMock->expects($this->once())->method('getIds')
78  ->willReturn(['conf1', 'conf2']);
79  $this->configurableMock->expects($this->any())->method('getChildrenIds')->willReturnMap([
80  ['conf1', true, [ 0 => ['simple1']]],
81  ['conf2', true, [ 0 => ['simple1', 'simple2']]],
82  ]);
83 
84  $this->assertEquals(
85  [
86  'simple1' => [
87  0 => true,
88  1 => true,
89  3 => true,
90  ],
91  'simple2' => [
92  3 => true,
93  ]
94  ],
95  $this->configurableProductHandler->afterGetMatchingProductIds(
96  $this->ruleMock,
97  [
98  'conf1' => [
99  0 => true,
100  1 => true,
101  ],
102  'conf2' => [
103  0 => false,
104  1 => false,
105  3 => true,
106  4 => false,
107  ],
108  ]
109  )
110  );
111  }
112 }