Skip to content

Commit 10d1009

Browse files
committed
B2B-2464: Improve category children loading
- Add test coverage for new $excludedMethodsClassMap dependency
1 parent 02c28ea commit 10d1009

File tree

1 file changed

+66
-26
lines changed

1 file changed

+66
-26
lines changed

lib/internal/Magento/Framework/Reflection/Test/Unit/DataObjectProcessorTest.php

Lines changed: 66 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ class DataObjectProcessorTest extends TestCase
2626
*/
2727
private $dataObjectProcessor;
2828

29+
/**
30+
* @var MethodsMap
31+
*/
32+
private $methodsMapProcessor;
33+
2934
/**
3035
* @var ExtensionAttributesProcessor|MockObject
3136
*/
@@ -34,7 +39,7 @@ class DataObjectProcessorTest extends TestCase
3439
protected function setUp(): void
3540
{
3641
$objectManager = new ObjectManager($this);
37-
$methodsMapProcessor = $objectManager->getObject(
42+
$this->methodsMapProcessor = $objectManager->getObject(
3843
MethodsMap::class,
3944
[
4045
'fieldNamer' => $objectManager->getObject(FieldNamer::class),
@@ -48,35 +53,40 @@ protected function setUp(): void
4853
->willReturn(['unserializedData']);
4954

5055
$objectManager->setBackwardCompatibleProperty(
51-
$methodsMapProcessor,
56+
$this->methodsMapProcessor,
5257
'serializer',
5358
$serializerMock
5459
);
5560

5661
$this->extensionAttributesProcessorMock = $this->getMockBuilder(ExtensionAttributesProcessor::class)
5762
->disableOriginalConstructor()
5863
->getMock();
64+
}
65+
66+
/**
67+
* @param array $extensionAttributes
68+
* @param array $excludedMethodsClassMap
69+
* @param array $expectedOutput
70+
* @dataProvider buildOutputDataArrayDataProvider
71+
*/
72+
public function testBuildOutputDataArray(
73+
array $extensionAttributes,
74+
array $excludedMethodsClassMap,
75+
array $expectedOutput
76+
) {
77+
$objectManager = new ObjectManager($this);
5978

6079
$this->dataObjectProcessor = $objectManager->getObject(
6180
DataObjectProcessor::class,
6281
[
63-
'methodsMapProcessor' => $methodsMapProcessor,
82+
'methodsMapProcessor' => $this->methodsMapProcessor,
6483
'typeCaster' => $objectManager->getObject(TypeCaster::class),
6584
'fieldNamer' => $objectManager->getObject(FieldNamer::class),
66-
'extensionAttributesProcessor' => $this->extensionAttributesProcessorMock
85+
'extensionAttributesProcessor' => $this->extensionAttributesProcessorMock,
86+
'excludedMethodsClassMap' => $excludedMethodsClassMap,
6787
]
6888
);
69-
}
7089

71-
/**
72-
* @param array $extensionAttributes
73-
* @param array $expectedOutputDataArray
74-
*
75-
* @dataProvider buildOutputDataArrayDataProvider
76-
*/
77-
public function testBuildOutputDataArray($extensionAttributes, $expectedOutputDataArray)
78-
{
79-
$objectManager = new ObjectManager($this);
8090
/** @var TestDataObject $testDataObject */
8191
$testDataObject = $objectManager->getObject(
8292
TestDataObject::class,
@@ -87,40 +97,70 @@ public function testBuildOutputDataArray($extensionAttributes, $expectedOutputDa
8797
]
8898
);
8999

90-
$this->extensionAttributesProcessorMock->expects($this->once())
100+
if (in_array('getExtensionAttributes', $excludedMethodsClassMap[TestDataInterface::class] ?? [])) {
101+
$expectedTimes = $this->never();
102+
} else {
103+
$expectedTimes = $this->once();
104+
}
105+
106+
$this->extensionAttributesProcessorMock->expects($expectedTimes)
91107
->method('buildOutputDataArray')
92108
->willReturn($extensionAttributes);
93109

94110
$outputData = $this->dataObjectProcessor
95111
->buildOutputDataArray($testDataObject, TestDataInterface::class);
96-
$this->assertEquals($expectedOutputDataArray, $outputData);
112+
$this->assertEquals($expectedOutput, $outputData);
97113
}
98114

99115
/**
100116
* @return array
101117
*/
102118
public function buildOutputDataArrayDataProvider()
103119
{
104-
$expectedOutputDataArray = [
120+
$expectedOutput = [
105121
'id' => '1',
106122
'address' => 'someAddress',
107123
'default_shipping' => 'true',
108124
'required_billing' => 'false',
109125
];
110-
$extensionAttributeArray = [
126+
127+
$extensionAttributes = [
111128
'attribute1' => 'value1',
112-
'attribute2' => 'value2'
129+
'attribute2' => 'value2',
113130
];
114131

115132
return [
116-
'No Attributes' => [[], $expectedOutputDataArray],
117-
'With Attributes' => [
118-
$extensionAttributeArray,
133+
'No Extension Attributes or Excluded Methods' => [
134+
[],
135+
[],
136+
$expectedOutput,
137+
],
138+
'With Extension Attributes' => [
139+
$extensionAttributes,
140+
[],
119141
array_merge(
120-
$expectedOutputDataArray,
121-
['extension_attributes' => $extensionAttributeArray]
122-
)
123-
]
142+
$expectedOutput,
143+
['extension_attributes' => $extensionAttributes]
144+
),
145+
],
146+
'With Excluded Method' => [
147+
[],
148+
[
149+
TestDataInterface::class => [
150+
'getAddress',
151+
],
152+
],
153+
array_diff_key($expectedOutput, array_flip(['address'])),
154+
],
155+
'With getExtensionAttributes as Excluded Method' => [
156+
$extensionAttributes,
157+
[
158+
TestDataInterface::class => [
159+
'getExtensionAttributes',
160+
],
161+
],
162+
$expectedOutput,
163+
],
124164
];
125165
}
126166
}

0 commit comments

Comments
 (0)