|
8 | 8 | namespace Magento\Bundle\Test\Unit\Model;
|
9 | 9 |
|
10 | 10 | use Magento\Bundle\Model\OptionRepository;
|
| 11 | +use Magento\Framework\Exception\NoSuchEntityException; |
11 | 12 |
|
12 | 13 | /**
|
13 | 14 | * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
|
@@ -84,7 +85,7 @@ protected function setUp()
|
84 | 85 | ->getMock();
|
85 | 86 | $this->optionResourceMock = $this->createPartialMock(
|
86 | 87 | \Magento\Bundle\Model\ResourceModel\Option::class,
|
87 |
| - ['delete', '__wakeup', 'save', 'removeOptionSelections'] |
| 88 | + ['get', 'delete', '__wakeup', 'save', 'removeOptionSelections'] |
88 | 89 | );
|
89 | 90 | $this->storeManagerMock = $this->createMock(\Magento\Store\Model\StoreManagerInterface::class);
|
90 | 91 | $this->linkManagementMock = $this->createMock(\Magento\Bundle\Api\ProductLinkManagementInterface::class);
|
@@ -227,32 +228,91 @@ public function testDeleteThrowsExceptionIfCannotDelete()
|
227 | 228 | $this->model->delete($optionMock);
|
228 | 229 | }
|
229 | 230 |
|
| 231 | + /** |
| 232 | + * Test successful delete action for given $optionId |
| 233 | + */ |
230 | 234 | public function testDeleteById()
|
231 | 235 | {
|
232 | 236 | $productSku = 'sku';
|
233 | 237 | $optionId = 100;
|
234 |
| - $productMock = $this->createMock(\Magento\Catalog\Api\Data\ProductInterface::class); |
| 238 | + |
| 239 | + $optionMock = $this->createMock(\Magento\Bundle\Model\Option::class); |
| 240 | + $optionMock->expects($this->exactly(2)) |
| 241 | + ->method('getId') |
| 242 | + ->willReturn($optionId); |
| 243 | + |
| 244 | + $optionMock->expects($this->once()) |
| 245 | + ->method('getData') |
| 246 | + ->willReturn([ |
| 247 | + 'title' => 'Option title', |
| 248 | + 'option_id' => $optionId |
| 249 | + ]); |
| 250 | + |
| 251 | + $this->optionFactoryMock->expects($this->once()) |
| 252 | + ->method('create') |
| 253 | + ->willReturn($optionMock); |
| 254 | + |
| 255 | + $productMock = $this->createPartialMock( |
| 256 | + \Magento\Catalog\Model\Product::class, |
| 257 | + ['getTypeId', 'getTypeInstance', 'getStoreId', 'getPriceType', '__wakeup', 'getSku'] |
| 258 | + ); |
235 | 259 | $productMock->expects($this->once())
|
236 | 260 | ->method('getTypeId')
|
237 | 261 | ->willReturn(\Magento\Catalog\Model\Product\Type::TYPE_BUNDLE);
|
238 |
| - $this->productRepositoryMock->expects($this->once()) |
| 262 | + $productMock->expects($this->exactly(2))->method('getSku')->willReturn($productSku); |
| 263 | + |
| 264 | + $this->productRepositoryMock |
| 265 | + ->expects($this->once()) |
239 | 266 | ->method('get')
|
240 | 267 | ->with($productSku)
|
241 | 268 | ->willReturn($productMock);
|
242 | 269 |
|
| 270 | + $optCollectionMock = $this->createMock(\Magento\Bundle\Model\ResourceModel\Option\Collection::class); |
| 271 | + $optCollectionMock->expects($this->once())->method('getItemById')->with($optionId)->willReturn($optionMock); |
| 272 | + $this->typeMock->expects($this->once()) |
| 273 | + ->method('getOptionsCollection') |
| 274 | + ->with($productMock) |
| 275 | + ->willReturn($optCollectionMock); |
| 276 | + |
| 277 | + $this->assertTrue($this->model->deleteById($productSku, $optionId)); |
| 278 | + } |
| 279 | + |
| 280 | + /** |
| 281 | + * Tests if NoSuchEntityException thrown when provided $optionId not found |
| 282 | + */ |
| 283 | + public function testDeleteByIdException() { |
| 284 | + $productSku = 'sku'; |
| 285 | + $optionId = null; |
| 286 | + |
243 | 287 | $optionMock = $this->createMock(\Magento\Bundle\Model\Option::class);
|
| 288 | + $optionMock->expects($this->exactly(1)) |
| 289 | + ->method('getId') |
| 290 | + ->willReturn($optionId); |
| 291 | + |
| 292 | + $productMock = $this->createPartialMock( |
| 293 | + \Magento\Catalog\Model\Product::class, |
| 294 | + ['getTypeId', 'getTypeInstance', 'getStoreId', 'getPriceType', '__wakeup', 'getSku'] |
| 295 | + ); |
| 296 | + $productMock->expects($this->once()) |
| 297 | + ->method('getTypeId') |
| 298 | + ->willReturn(\Magento\Catalog\Model\Product\Type::TYPE_BUNDLE); |
| 299 | + |
| 300 | + $this->productRepositoryMock |
| 301 | + ->expects($this->once()) |
| 302 | + ->method('get') |
| 303 | + ->with($productSku) |
| 304 | + ->willReturn($productMock); |
244 | 305 |
|
245 | 306 | $optCollectionMock = $this->createMock(\Magento\Bundle\Model\ResourceModel\Option\Collection::class);
|
| 307 | + $optCollectionMock->expects($this->once())->method('getItemById')->with($optionId)->willReturn($optionMock); |
246 | 308 | $this->typeMock->expects($this->once())
|
247 | 309 | ->method('getOptionsCollection')
|
248 | 310 | ->with($productMock)
|
249 | 311 | ->willReturn($optCollectionMock);
|
250 | 312 |
|
251 |
| - $optCollectionMock->expects($this->once())->method('setIdFilter')->with($optionId)->willReturnSelf(); |
252 |
| - $optCollectionMock->expects($this->once())->method('getFirstItem')->willReturn($optionMock); |
| 313 | + $this->expectException(NoSuchEntityException::class); |
253 | 314 |
|
254 |
| - $this->optionResourceMock->expects($this->once())->method('delete')->with($optionMock)->willReturnSelf(); |
255 |
| - $this->assertTrue($this->model->deleteById($productSku, $optionId)); |
| 315 | + $this->model->deleteById($productSku, $optionId); |
256 | 316 | }
|
257 | 317 |
|
258 | 318 | /**
|
|
0 commit comments