@@ -26,6 +26,11 @@ class DataObjectProcessorTest extends TestCase
26
26
*/
27
27
private $ dataObjectProcessor ;
28
28
29
+ /**
30
+ * @var MethodsMap
31
+ */
32
+ private $ methodsMapProcessor ;
33
+
29
34
/**
30
35
* @var ExtensionAttributesProcessor|MockObject
31
36
*/
@@ -34,7 +39,7 @@ class DataObjectProcessorTest extends TestCase
34
39
protected function setUp (): void
35
40
{
36
41
$ objectManager = new ObjectManager ($ this );
37
- $ methodsMapProcessor = $ objectManager ->getObject (
42
+ $ this -> methodsMapProcessor = $ objectManager ->getObject (
38
43
MethodsMap::class,
39
44
[
40
45
'fieldNamer ' => $ objectManager ->getObject (FieldNamer::class),
@@ -48,35 +53,40 @@ protected function setUp(): void
48
53
->willReturn (['unserializedData ' ]);
49
54
50
55
$ objectManager ->setBackwardCompatibleProperty (
51
- $ methodsMapProcessor ,
56
+ $ this -> methodsMapProcessor ,
52
57
'serializer ' ,
53
58
$ serializerMock
54
59
);
55
60
56
61
$ this ->extensionAttributesProcessorMock = $ this ->getMockBuilder (ExtensionAttributesProcessor::class)
57
62
->disableOriginalConstructor ()
58
63
->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 );
59
78
60
79
$ this ->dataObjectProcessor = $ objectManager ->getObject (
61
80
DataObjectProcessor::class,
62
81
[
63
- 'methodsMapProcessor ' => $ methodsMapProcessor ,
82
+ 'methodsMapProcessor ' => $ this -> methodsMapProcessor ,
64
83
'typeCaster ' => $ objectManager ->getObject (TypeCaster::class),
65
84
'fieldNamer ' => $ objectManager ->getObject (FieldNamer::class),
66
- 'extensionAttributesProcessor ' => $ this ->extensionAttributesProcessorMock
85
+ 'extensionAttributesProcessor ' => $ this ->extensionAttributesProcessorMock ,
86
+ 'excludedMethodsClassMap ' => $ excludedMethodsClassMap ,
67
87
]
68
88
);
69
- }
70
89
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 );
80
90
/** @var TestDataObject $testDataObject */
81
91
$ testDataObject = $ objectManager ->getObject (
82
92
TestDataObject::class,
@@ -87,40 +97,70 @@ public function testBuildOutputDataArray($extensionAttributes, $expectedOutputDa
87
97
]
88
98
);
89
99
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 )
91
107
->method ('buildOutputDataArray ' )
92
108
->willReturn ($ extensionAttributes );
93
109
94
110
$ outputData = $ this ->dataObjectProcessor
95
111
->buildOutputDataArray ($ testDataObject , TestDataInterface::class);
96
- $ this ->assertEquals ($ expectedOutputDataArray , $ outputData );
112
+ $ this ->assertEquals ($ expectedOutput , $ outputData );
97
113
}
98
114
99
115
/**
100
116
* @return array
101
117
*/
102
118
public function buildOutputDataArrayDataProvider ()
103
119
{
104
- $ expectedOutputDataArray = [
120
+ $ expectedOutput = [
105
121
'id ' => '1 ' ,
106
122
'address ' => 'someAddress ' ,
107
123
'default_shipping ' => 'true ' ,
108
124
'required_billing ' => 'false ' ,
109
125
];
110
- $ extensionAttributeArray = [
126
+
127
+ $ extensionAttributes = [
111
128
'attribute1 ' => 'value1 ' ,
112
- 'attribute2 ' => 'value2 '
129
+ 'attribute2 ' => 'value2 ' ,
113
130
];
114
131
115
132
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
+ [],
119
141
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
+ ],
124
164
];
125
165
}
126
166
}
0 commit comments