|
7 | 7 |
|
8 | 8 | namespace Magento\Bundle\Test\Unit\Model\Sales\Order; |
9 | 9 |
|
| 10 | +use Laminas\Uri\Http as HttpUri; |
10 | 11 | use Magento\Bundle\Model\Sales\Order\BundleOrderTypeValidator; |
11 | | -use Magento\Framework\Phrase; |
| 12 | +use Magento\Framework\Webapi\Request; |
12 | 13 | use Magento\Sales\Api\Data\OrderItemInterface; |
13 | 14 | use Magento\Sales\Model\Order\Shipment; |
14 | 15 | use PHPUnit\Framework\MockObject\MockObject; |
|
17 | 18 |
|
18 | 19 | class BundleOrderTypeValidatorTest extends TestCase |
19 | 20 | { |
| 21 | + /** |
| 22 | + * @var Request|Request&MockObject|MockObject |
| 23 | + */ |
| 24 | + private Request $request; |
| 25 | + |
| 26 | + /** |
| 27 | + * @var BundleOrderTypeValidator |
| 28 | + */ |
| 29 | + private BundleOrderTypeValidator $validator; |
| 30 | + |
| 31 | + /** |
| 32 | + * @return void |
| 33 | + */ |
| 34 | + protected function setUp(): void |
| 35 | + { |
| 36 | + $this->request = $this->createMock(Request::class); |
| 37 | + $uri = $this->createMock(HttpUri::class); |
| 38 | + $uri->expects($this->any())->method('getPath')->willReturn('V1/shipment/'); |
| 39 | + $this->request->expects($this->any())->method('getUri')->willReturn($uri); |
| 40 | + |
| 41 | + $this->validator = new BundleOrderTypeValidator($this->request); |
| 42 | + |
| 43 | + parent::setUp(); |
| 44 | + } |
| 45 | + |
20 | 46 | /** |
21 | 47 | * @return void |
22 | 48 | */ |
@@ -56,9 +82,8 @@ public function testIsValidSuccess(): void |
56 | 82 | $shipment->expects($this->once())->method('getOrder')->willReturn($order); |
57 | 83 |
|
58 | 84 | try { |
59 | | - $validator = new BundleOrderTypeValidator(); |
60 | | - $validator->isValid($shipment); |
61 | | - $this->assertEmpty($validator->getMessages()); |
| 85 | + $this->validator->isValid($shipment); |
| 86 | + $this->assertEmpty($this->validator->getMessages()); |
62 | 87 | } catch (\Exception $e) { |
63 | 88 | $this->fail('Could not perform shipment validation. ' . $e->getMessage()); |
64 | 89 | } |
@@ -91,19 +116,11 @@ public function testIsValidFailSeparateShipmentType(): void |
91 | 116 | $shipment->expects($this->once())->method('getOrder')->willReturn($order); |
92 | 117 |
|
93 | 118 | try { |
94 | | - $validator = new BundleOrderTypeValidator(); |
95 | | - $validator->isValid($shipment); |
96 | | - $messages = $validator->getMessages(); |
| 119 | + $this->validator->isValid($shipment); |
| 120 | + $messages = $this->validator->getMessages(); |
97 | 121 | $this->assertNotEmpty($messages); |
98 | | - /** @var Phrase $validationMsg */ |
99 | | - $validationMsg = current($messages)[0]; |
100 | | - foreach ($validationMsg->getArguments() as $argument) { |
101 | | - if (is_string($argument)) { |
102 | | - $this->assertSame($argument, 'bundleSKU'); |
103 | | - } else { |
104 | | - $this->assertTrue(in_array($argument->getText(), ['Separately', 'Bundle product options'])); |
105 | | - } |
106 | | - } |
| 122 | + $this->assertStringContainsString("bundleSKU", current($messages)); |
| 123 | + $this->assertStringContainsString("Separately", current($messages)); |
107 | 124 | } catch (\Exception $e) { |
108 | 125 | $this->fail('Could not perform shipment validation. ' . $e->getMessage()); |
109 | 126 | } |
@@ -140,19 +157,11 @@ public function testIsValidFailTogetherShipmentType(): void |
140 | 157 | $shipment->expects($this->once())->method('getOrder')->willReturn($order); |
141 | 158 |
|
142 | 159 | try { |
143 | | - $validator = new BundleOrderTypeValidator(); |
144 | | - $validator->isValid($shipment); |
145 | | - $messages = $validator->getMessages(); |
| 160 | + $this->validator->isValid($shipment); |
| 161 | + $messages = $this->validator->getMessages(); |
146 | 162 | $this->assertNotEmpty($messages); |
147 | | - /** @var Phrase $validationMsg */ |
148 | | - $validationMsg = current($messages)[0]; |
149 | | - foreach ($validationMsg->getArguments() as $argument) { |
150 | | - if (is_string($argument)) { |
151 | | - $this->assertSame($argument, 'bundleSKU'); |
152 | | - } else { |
153 | | - $this->assertTrue(in_array($argument->getText(), ['Together', 'Bundle product itself'])); |
154 | | - } |
155 | | - } |
| 163 | + $this->assertStringContainsString("bundleSKU", current($messages)); |
| 164 | + $this->assertStringContainsString("Together", current($messages)); |
156 | 165 | } catch (\Exception $e) { |
157 | 166 | $this->fail('Could not perform shipment validation. ' . $e->getMessage()); |
158 | 167 | } |
|
0 commit comments