AttributeLoaderTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Eav\Test\Unit\Model\ResourceModel;
  7. class AttributeLoaderTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Eav\Api\AttributeRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject
  11. */
  12. private $attributeRepositoryMock;
  13. /**
  14. * @var \Magento\Framework\EntityManager\MetadataPool|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. private $metadataPoolMock;
  17. /**
  18. * @var \Magento\Framework\Api\SearchCriteriaBuilder|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. private $searchCriteriaBuilderMock;
  21. /**
  22. * @var \Magento\Eav\Model\ResourceModel\AttributeLoader
  23. */
  24. private $attributeLoader;
  25. protected function setUp()
  26. {
  27. $this->attributeRepositoryMock = $this->createMock(\Magento\Eav\Api\AttributeRepositoryInterface::class);
  28. $this->metadataPoolMock = $this->getMockBuilder(\Magento\Framework\EntityManager\MetadataPool::class)
  29. ->disableOriginalConstructor()
  30. ->getMock();
  31. $this->searchCriteriaBuilderMock = $this->getMockBuilder(\Magento\Framework\Api\SearchCriteriaBuilder::class)
  32. ->disableOriginalConstructor()
  33. ->getMock();
  34. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  35. $this->attributeLoader = $objectManagerHelper->getObject(
  36. \Magento\Eav\Model\ResourceModel\AttributeLoader::class,
  37. [
  38. 'attributeRepository' => $this->attributeRepositoryMock,
  39. 'metadataPool' => $this->metadataPoolMock,
  40. 'searchCriteriaBuilder' => $this->searchCriteriaBuilderMock
  41. ]
  42. );
  43. }
  44. /**
  45. * @param string $entityType
  46. * @param int|null $attributeSetId
  47. * @param string $expectedCondition
  48. * @dataProvider getAttributesDataProvider
  49. */
  50. public function testGetAttributes($entityType, $attributeSetId, $expectedCondition)
  51. {
  52. $metadataMock = $this->createMock(\Magento\Framework\EntityManager\EntityMetadataInterface::class);
  53. $metadataMock->expects($this->once())
  54. ->method('getEavEntityType')
  55. ->willReturn($entityType);
  56. $this->metadataPoolMock->expects($this->once())
  57. ->method('getMetadata')
  58. ->with($entityType)
  59. ->willReturn($metadataMock);
  60. $searchCriteria = $this->createMock(\Magento\Framework\Api\SearchCriteriaInterface::class);
  61. $this->searchCriteriaBuilderMock->expects($this->once())
  62. ->method('addFilter')
  63. ->with(
  64. \Magento\Eav\Model\ResourceModel\AttributeLoader::ATTRIBUTE_SET_ID,
  65. $attributeSetId,
  66. $expectedCondition
  67. )->willReturnSelf();
  68. $this->searchCriteriaBuilderMock->expects($this->once())
  69. ->method('create')
  70. ->willReturn($searchCriteria);
  71. $attributeMock = $this->createMock(\Magento\Eav\Api\Data\AttributeInterface::class);
  72. $searchResultMock = $this->createMock(\Magento\Eav\Api\Data\AttributeSearchResultsInterface::class);
  73. $searchResultMock->expects($this->once())
  74. ->method('getItems')
  75. ->willReturn([$attributeMock]);
  76. $this->attributeRepositoryMock->expects($this->once())
  77. ->method('getList')
  78. ->with($entityType, $searchCriteria)
  79. ->willReturn($searchResultMock);
  80. $this->assertEquals([$attributeMock], $this->attributeLoader->getAttributes($entityType, $attributeSetId));
  81. }
  82. /**
  83. * @return array
  84. */
  85. public function getAttributesDataProvider()
  86. {
  87. return [
  88. ['entity-type', null, 'neq'],
  89. ['entity-type', 1, 'eq']
  90. ];
  91. }
  92. }