DataProviderTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesRule\Test\Unit\Model\Rule;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. class DataProviderTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\SalesRule\Model\Rule\DataProvider
  12. */
  13. protected $model;
  14. /**
  15. * @var \PHPUnit_Framework_MockObject_MockObject
  16. */
  17. protected $collectionFactoryMock;
  18. /**
  19. * @var \PHPUnit_Framework_MockObject_MockObject
  20. */
  21. protected $storeMock;
  22. /**
  23. * @var \PHPUnit_Framework_MockObject_MockObject
  24. */
  25. protected $groupRepositoryMock;
  26. /**
  27. * @var \PHPUnit_Framework_MockObject_MockObject
  28. */
  29. protected $searchCriteriaBuilderMock;
  30. /**
  31. * @var \PHPUnit_Framework_MockObject_MockObject
  32. */
  33. protected $dataObjectMock;
  34. /**
  35. * @var \PHPUnit_Framework_MockObject_MockObject
  36. */
  37. protected $collectionMock;
  38. protected function setUp()
  39. {
  40. $this->collectionFactoryMock = $this->createPartialMock(
  41. \Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory::class,
  42. ['create']
  43. );
  44. $this->collectionMock = $this->createMock(\Magento\SalesRule\Model\ResourceModel\Rule\Collection::class);
  45. $this->collectionFactoryMock->expects($this->once())->method('create')->willReturn($this->collectionMock);
  46. $ruleMock = $this->createMock(\Magento\SalesRule\Model\Rule::class);
  47. $metaDataValueProviderMock = $this->getMockBuilder(\Magento\SalesRule\Model\Rule\Metadata\ValueProvider::class)
  48. ->disableOriginalConstructor()
  49. ->setMethods([])
  50. ->getMock();
  51. $registryMock = $this->createMock(\Magento\Framework\Registry::class);
  52. $registryMock->expects($this->once())
  53. ->method('registry')
  54. ->willReturn($ruleMock);
  55. $metaDataValueProviderMock->expects($this->once())->method('getMetadataValues')->willReturn(['data']);
  56. $this->model = (new ObjectManager($this))->getObject(
  57. \Magento\SalesRule\Model\Rule\DataProvider::class,
  58. [
  59. 'name' => 'Name',
  60. 'primaryFieldName' => 'Primary',
  61. 'requestFieldName' => 'Request',
  62. 'collectionFactory' => $this->collectionFactoryMock,
  63. 'registry' => $registryMock,
  64. 'metadataValueProvider' => $metaDataValueProviderMock
  65. ]
  66. );
  67. }
  68. public function testGetData()
  69. {
  70. $ruleId = 42;
  71. $ruleData = ['name' => 'Sales Price Rule'];
  72. $ruleMock = $this->createPartialMock(\Magento\SalesRule\Model\Rule::class, [
  73. 'getDiscountAmount',
  74. 'setDiscountAmount',
  75. 'getDiscountQty',
  76. 'setDiscountQty',
  77. 'load',
  78. 'getId',
  79. 'getData'
  80. ]);
  81. $this->collectionMock->expects($this->once())->method('getItems')->willReturn([$ruleMock]);
  82. $ruleMock->expects($this->atLeastOnce())->method('getId')->willReturn($ruleId);
  83. $ruleMock->expects($this->once())->method('load')->willReturnSelf();
  84. $ruleMock->expects($this->once())->method('getData')->willReturn($ruleData);
  85. $ruleMock->expects($this->once())->method('getDiscountAmount')->willReturn(50.000);
  86. $ruleMock->expects($this->once())->method('setDiscountAmount')->with(50)->willReturn($ruleMock);
  87. $ruleMock->expects($this->once())->method('getDiscountQty')->willReturn(20.010);
  88. $ruleMock->expects($this->once())->method('setDiscountQty')->with(20.01)->willReturn($ruleMock);
  89. $this->assertEquals([$ruleId => $ruleData], $this->model->getData());
  90. // Load from object-cache the second time
  91. $this->assertEquals([$ruleId => $ruleData], $this->model->getData());
  92. }
  93. }