Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
OrderProductAvailabilityCheckerTest.php
Go to the documentation of this file.
1 <?php
7 
13 
17 class OrderProductAvailabilityCheckerTest extends \PHPUnit\Framework\TestCase
18 {
22  private $productAvailabilityChecks;
23 
27  private $orderItemMock;
28 
32  private $orderItemInterfaceMock;
33 
37  private $configurableCheckerMock;
38 
42  private $productTypeConfigurable;
43 
47  private $productTypeSimple;
48 
52  private $checker;
53 
54  protected function setUp()
55  {
56  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
57  $this->orderItemMock = $this->getMockBuilder(Item::class)->disableOriginalConstructor()->getMock();
58  $this->orderItemInterfaceMock = $this->getMockBuilder(OrderItemInterface::class)
59  ->disableOriginalConstructor()
60  ->getMockForAbstractClass();
61 
62  $this->productTypeConfigurable = 'configurable';
63  $this->productTypeSimple = 'simple';
64  $this->configurableCheckerMock = $this->getMockBuilder(ConfigurableChecker::class)
65  ->disableOriginalConstructor()
66  ->getMock();
67  $fakeClass = new \stdClass();
68  $this->productAvailabilityChecks[$this->productTypeConfigurable] = $this->configurableCheckerMock;
69  $this->productAvailabilityChecks[$this->productTypeSimple] = $fakeClass;
70 
71  $this->checker = $objectManager->getObject(
72  OrderedProductAvailabilityChecker::class,
73  [
74  'productAvailabilityChecks' => $this->productAvailabilityChecks
75  ]
76  );
77  }
78 
79  public function testIsAvailableTrue()
80  {
81  $this->getProductType($this->productTypeConfigurable);
82  $this->isAvailable(true);
83  $this->assertTrue($this->checker->isAvailable($this->orderItemMock));
84  }
85 
86  public function testIsAvailableFalse()
87  {
88  $this->getProductType($this->productTypeConfigurable);
89  $this->isAvailable(false);
90  $this->assertFalse($this->checker->isAvailable($this->orderItemMock));
91  }
92 
96  public function testIsAvailableException()
97  {
98  $this->getProductType($this->productTypeSimple);
99  $this->checker->isAvailable($this->orderItemMock);
100  }
101 
103  {
104  $this->getProductType('test_type');
105  $this->assertTrue($this->checker->isAvailable($this->orderItemMock));
106  }
107 
111  private function getProductType($productType)
112  {
113  $this->orderItemMock->expects($this->any())
114  ->method('getParentItem')
115  ->willReturn($this->orderItemInterfaceMock);
116  $this->orderItemInterfaceMock->expects($this->any())
117  ->method('getProductType')
118  ->willReturn($productType);
119  }
120 
124  private function isAvailable($result)
125  {
126  $this->configurableCheckerMock->expects($this->once())
127  ->method('isAvailable')
128  ->with($this->orderItemMock)
129  ->willReturn($result);
130  }
131 }
$objectManager
Definition: bootstrap.php:17