@@ -119,7 +119,7 @@ function ($type, $buffer) use ($output) {
119
119
* @return string
120
120
* @throws \Magento\FunctionalTestingFramework\Exceptions\XmlException
121
121
*/
122
- private function getGroupAndSuiteConfiguration (array $ groups )
122
+ private function OLDgetGroupAndSuiteConfiguration (array $ groups )
123
123
{
124
124
$ testConfiguration ['tests ' ] = [];
125
125
$ testConfiguration ['suites ' ] = null ;
@@ -139,4 +139,112 @@ private function getGroupAndSuiteConfiguration(array $groups)
139
139
$ testConfigurationJson = json_encode ($ testConfiguration );
140
140
return $ testConfigurationJson ;
141
141
}
142
+
143
+ /** first attempt at an implementation, needs tested */
144
+ private function first_attempt_getGroupAndSuiteConfiguration (array $ groups )
145
+ {
146
+ $ testConfiguration ['tests ' ] = [];
147
+ $ testConfiguration ['suites ' ] = null ;
148
+ $ availableSuites = SuiteObjectHandler::getInstance ()->getAllObjects ();
149
+
150
+ // iterate through all group names passed into the command
151
+ foreach ($ groups as $ group ) {
152
+ if (array_key_exists ($ group , $ availableSuites )) {
153
+ // group is actually a suite, so add it to the suites array
154
+ $ testConfiguration ['suites ' ][$ group ] = [];
155
+ } else {
156
+ // group is a group, so find and add all tests from that group to the tests array
157
+ $ testConfiguration ['tests ' ] = array_merge (
158
+ $ testConfiguration ['tests ' ],
159
+ array_keys (TestObjectHandler::getInstance ()->getTestsByGroup ($ group ))
160
+ );
161
+ }
162
+ }
163
+
164
+ // find all tests that are in suites and build pairs
165
+ $ testsInSuites = SuiteObjectHandler::getInstance ()->getAllTestReferences ();
166
+ $ suiteToTestPair = [];
167
+ foreach ($ testConfiguration ['tests ' ] as $ test ) {
168
+ if (array_key_exists ($ test , $ testsInSuites )) {
169
+ $ suites = $ testsInSuites [$ test ];
170
+ foreach ($ suites as $ suite ) {
171
+ $ suiteToTestPair [] = "$ suite: $ test " ;
172
+ }
173
+ }
174
+ }
175
+
176
+ // add tests to suites array
177
+ $ diff = [];
178
+ foreach ($ suiteToTestPair as $ pair ) {
179
+ list ($ suite , $ test ) = explode (": " , $ pair );
180
+ $ testConfiguration ['suites ' ][$ suite ][] = $ test ;
181
+ $ diff [] = $ test ;
182
+ }
183
+
184
+ // remove tests in suites from the tests array
185
+ $ testConfiguration ['tests ' ] = array_diff ($ testConfiguration ['tests ' ], $ diff );
186
+
187
+ // encode and return the result
188
+ $ testConfigurationJson = json_encode ($ testConfiguration );
189
+ return $ testConfigurationJson ;
190
+ }
191
+
192
+ /** second attempt at a cleaner implementation, needs work */
193
+ private function getGroupAndSuiteConfiguration (array $ groupOrSuiteNames )
194
+ {
195
+ $ result ['tests ' ] = [];
196
+ $ result ['suites ' ] = null ;
197
+
198
+ $ groups = [];
199
+ $ suites = [];
200
+
201
+ $ allSuites = SuiteObjectHandler::getInstance ()->getAllObjects ();
202
+ $ testsInSuites = SuiteObjectHandler::getInstance ()->getAllTestReferences ();
203
+
204
+ foreach ($ groupOrSuiteNames as $ groupOrSuiteName ) {
205
+ if (array_key_exists ($ groupOrSuiteName , $ allSuites )) {
206
+ $ suites [] = $ groupOrSuiteName ;
207
+ } else {
208
+ $ groups [] = $ groupOrSuiteName ;
209
+ }
210
+ }
211
+
212
+ foreach ($ suites as $ suite ) {
213
+ $ result ['suites ' ][$ suite ] = [];
214
+ }
215
+
216
+ foreach ($ groups as $ group ) {
217
+ $ testsInGroup = TestObjectHandler::getInstance ()->getTestsByGroup ($ group );
218
+
219
+ $ testsInGroupAndNotInAnySuite = array_diff (
220
+ array_keys ($ testsInGroup ),
221
+ array_keys ($ testsInSuites )
222
+ );
223
+
224
+ $ testsInGroupAndInAnySuite = array_diff (
225
+ array_keys ($ testsInGroup ),
226
+ $ testsInGroupAndNotInAnySuite
227
+ );
228
+
229
+ foreach ($ testsInGroupAndInAnySuite as $ testInGroupAndInAnySuite ) {
230
+ $ cat = $ testsInSuites [$ testInGroupAndInAnySuite ][0 ];
231
+ $ dog [$ cat ][] = $ testInGroupAndInAnySuite ;
232
+
233
+ /*
234
+ * todo -- I left off here. Code works so far.
235
+ * I need to take this $dog array and put into the $result['suites'] array
236
+ * and then test it thoroughly
237
+ */
238
+
239
+ }
240
+
241
+ $ result ['tests ' ] = array_merge (
242
+ $ result ['tests ' ],
243
+ $ testsInGroupAndNotInAnySuite
244
+ );
245
+ }
246
+
247
+ $ json = json_encode ($ result );
248
+ return $ json ;
249
+ }
142
250
}
0 commit comments