OptionManagementTest.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Bundle\Test\Unit\Model;
  8. use \Magento\Bundle\Model\OptionManagement;
  9. class OptionManagementTest extends \PHPUnit\Framework\TestCase
  10. {
  11. /**
  12. * @var OptionManagement
  13. */
  14. protected $model;
  15. /**
  16. * @var \PHPUnit_Framework_MockObject_MockObject
  17. */
  18. protected $optionRepositoryMock;
  19. /**
  20. * @var \PHPUnit_Framework_MockObject_MockObject
  21. */
  22. protected $productRepositoryMock;
  23. /**
  24. * @var \PHPUnit_Framework_MockObject_MockObject
  25. */
  26. protected $optionMock;
  27. /**
  28. * @var \PHPUnit_Framework_MockObject_MockObject
  29. */
  30. protected $productMock;
  31. protected function setUp()
  32. {
  33. $this->optionRepositoryMock =
  34. $this->createMock(\Magento\Bundle\Api\ProductOptionRepositoryInterface::class);
  35. $this->productRepositoryMock =
  36. $this->createMock(\Magento\Catalog\Api\ProductRepositoryInterface::class);
  37. $this->optionMock = $this->createMock(\Magento\Bundle\Api\Data\OptionInterface::class);
  38. $this->productMock = $this->createMock(\Magento\Catalog\Api\Data\ProductInterface::class);
  39. $this->model = new OptionManagement($this->optionRepositoryMock, $this->productRepositoryMock);
  40. }
  41. public function testSave()
  42. {
  43. $this->optionMock->expects($this->once())->method('getSku')->willReturn('bundle_product_sku');
  44. $this->productRepositoryMock->expects($this->once())
  45. ->method('get')
  46. ->with('bundle_product_sku')
  47. ->willReturn($this->productMock);
  48. $this->productMock->expects($this->once())
  49. ->method('getTypeId')
  50. ->willReturn(\Magento\Catalog\Model\Product\Type::TYPE_BUNDLE);
  51. $this->optionRepositoryMock->expects($this->once())
  52. ->method('save')
  53. ->with($this->productMock, $this->optionMock);
  54. $this->model->save($this->optionMock);
  55. }
  56. /**
  57. * @expectedException \Magento\Framework\Exception\InputException
  58. * @expectedExceptionMessage This is implemented for bundle products only.
  59. */
  60. public function testSaveWithException()
  61. {
  62. $this->optionMock->expects($this->once())->method('getSku')->willReturn('bundle_product_sku');
  63. $this->productRepositoryMock->expects($this->once())
  64. ->method('get')
  65. ->with('bundle_product_sku')
  66. ->willReturn($this->productMock);
  67. $this->productMock->expects($this->once())
  68. ->method('getTypeId')
  69. ->willReturn(\Magento\Catalog\Model\Product\Type::TYPE_SIMPLE);
  70. $this->optionRepositoryMock->expects($this->never())->method('save');
  71. $this->model->save($this->optionMock);
  72. }
  73. }