CreateHandlerTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Downloadable\Test\Unit\Model\Sample;
  7. use Magento\Catalog\Api\Data\ProductExtensionInterface;
  8. use Magento\Catalog\Api\Data\ProductInterface;
  9. use Magento\Downloadable\Api\Data\SampleInterface;
  10. use Magento\Downloadable\Api\SampleRepositoryInterface;
  11. use Magento\Downloadable\Model\Sample\CreateHandler;
  12. use Magento\Downloadable\Model\Product\Type;
  13. class CreateHandlerTest extends \PHPUnit\Framework\TestCase
  14. {
  15. /** @var CreateHandler */
  16. protected $model;
  17. /** @var SampleRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject */
  18. protected $sampleRepositoryMock;
  19. protected function setUp()
  20. {
  21. $this->sampleRepositoryMock = $this->getMockBuilder(SampleRepositoryInterface::class)
  22. ->getMockForAbstractClass();
  23. $this->model = new CreateHandler(
  24. $this->sampleRepositoryMock
  25. );
  26. }
  27. public function testExecute()
  28. {
  29. $entitySku = 'sku';
  30. $entityStoreId = 0;
  31. /** @var SampleInterface|\PHPUnit_Framework_MockObject_MockObject $sampleMock */
  32. $sampleMock = $this->getMockBuilder(SampleInterface::class)
  33. ->getMock();
  34. $sampleMock->expects($this->once())
  35. ->method('setId')
  36. ->with(null);
  37. /** @var ProductExtensionInterface|\PHPUnit_Framework_MockObject_MockObject $productExtensionMock */
  38. $productExtensionMock = $this->getMockBuilder(ProductExtensionInterface::class)
  39. ->setMethods(['getDownloadableProductSamples'])
  40. ->getMockForAbstractClass();
  41. $productExtensionMock->expects($this->once())
  42. ->method('getDownloadableProductSamples')
  43. ->willReturn([$sampleMock]);
  44. /** @var ProductInterface|\PHPUnit_Framework_MockObject_MockObject $entityMock */
  45. $entityMock = $this->getMockBuilder(ProductInterface::class)
  46. ->setMethods(['getTypeId', 'getExtensionAttributes', 'getSku', 'getStoreId'])
  47. ->getMockForAbstractClass();
  48. $entityMock->expects($this->once())
  49. ->method('getTypeId')
  50. ->willReturn(Type::TYPE_DOWNLOADABLE);
  51. $entityMock->expects($this->once())
  52. ->method('getExtensionAttributes')
  53. ->willReturn($productExtensionMock);
  54. $entityMock->expects($this->once())
  55. ->method('getSku')
  56. ->willReturn($entitySku);
  57. $entityMock->expects($this->once())
  58. ->method('getStoreId')
  59. ->willReturn($entityStoreId);
  60. $this->sampleRepositoryMock->expects($this->never())
  61. ->method('getList');
  62. $this->sampleRepositoryMock->expects($this->once())
  63. ->method('save')
  64. ->with($entitySku, $sampleMock, !$entityStoreId);
  65. $this->sampleRepositoryMock->expects($this->never())
  66. ->method('delete');
  67. $this->assertEquals($entityMock, $this->model->execute($entityMock));
  68. }
  69. public function testExecuteNonDownloadable()
  70. {
  71. /** @var ProductInterface|\PHPUnit_Framework_MockObject_MockObject $entityMock */
  72. $entityMock = $this->getMockBuilder(ProductInterface::class)
  73. ->setMethods(['getTypeId', 'getExtensionAttributes', 'getSku', 'getStoreId'])
  74. ->getMockForAbstractClass();
  75. $entityMock->expects($this->once())
  76. ->method('getTypeId')
  77. ->willReturn(Type::TYPE_DOWNLOADABLE . 'some');
  78. $entityMock->expects($this->never())
  79. ->method('getExtensionAttributes');
  80. $entityMock->expects($this->never())
  81. ->method('getSku');
  82. $entityMock->expects($this->never())
  83. ->method('getStoreId');
  84. $this->sampleRepositoryMock->expects($this->never())
  85. ->method('getList');
  86. $this->sampleRepositoryMock->expects($this->never())
  87. ->method('save');
  88. $this->sampleRepositoryMock->expects($this->never())
  89. ->method('delete');
  90. $this->assertEquals($entityMock, $this->model->execute($entityMock));
  91. }
  92. }