Skip to content

Commit 22e1f48

Browse files
committed
MQE-1713: Generate/run test in single suite context
- New Unit test for SuiteGenerator - Better message for exception in SuiteGenerator
1 parent af7c2fb commit 22e1f48

File tree

2 files changed

+49
-2
lines changed

2 files changed

+49
-2
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/Suite/SuiteGeneratorTest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Tests\unit\Magento\FunctionalTestFramework\Suite;
77

88
use AspectMock\Test as AspectMock;
9+
use Magento\FunctionalTestingFramework\Exceptions\TestReferenceException;
910
use Magento\FunctionalTestingFramework\ObjectManager\ObjectManager;
1011
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
1112
use Magento\FunctionalTestingFramework\Suite\SuiteGenerator;
@@ -17,6 +18,7 @@
1718
use Magento\FunctionalTestingFramework\Test\Parsers\TestDataParser;
1819
use Magento\FunctionalTestingFramework\Util\Manifest\DefaultTestManifest;
1920
use Magento\FunctionalTestingFramework\Util\MagentoTestCase;
21+
use Magento\FunctionalTestingFramework\Util\Manifest\TestManifestFactory;
2022
use tests\unit\Util\SuiteDataArrayBuilder;
2123
use tests\unit\Util\TestDataArrayBuilder;
2224
use tests\unit\Util\TestLoggingUtil;
@@ -143,6 +145,49 @@ public function testGenerateEmptySuite()
143145
$mockSuiteGenerator->generateSuite("basicTestSuite");
144146
}
145147

148+
public function testInvalidTestRef()
149+
{
150+
// Mock Suite1 => Test1 and Suite2 => Test2
151+
$suiteDataArrayBuilder = new SuiteDataArrayBuilder();
152+
$mockData = $suiteDataArrayBuilder
153+
->withName('Suite1')
154+
->includeGroups(['group1'])
155+
->build();
156+
$suiteDataArrayBuilder = new SuiteDataArrayBuilder();
157+
$mockData2 = $suiteDataArrayBuilder
158+
->withName('Suite2')
159+
->includeGroups(['group2'])
160+
->build();
161+
$mockSuiteData = array_merge_recursive($mockData, $mockData2);
162+
163+
$testDataArrayBuilder = new TestDataArrayBuilder();
164+
$mockSimpleTest = $testDataArrayBuilder
165+
->withName('Test1')
166+
->withAnnotations(['group' => [['value' => 'group1']]])
167+
->withTestActions()
168+
->build();
169+
$testDataArrayBuilder = new TestDataArrayBuilder();
170+
$mockSimpleTest2 = $testDataArrayBuilder
171+
->withName('Test2')
172+
->withAnnotations(['group' => [['value' => 'group2']]])
173+
->withTestActions()
174+
->build();
175+
$mockTestData = ['tests' => array_merge($mockSimpleTest, $mockSimpleTest2)];
176+
$this->setMockTestAndSuiteParserOutput($mockTestData, $mockSuiteData);
177+
178+
// Make invalid manifest
179+
$suiteConfig = ['Suite2' => ['Test1']];
180+
$manifest = TestManifestFactory::makeManifest('default', $suiteConfig);
181+
182+
// Set up Expected Exception
183+
$this->expectException(TestReferenceException::class);
184+
$this->expectExceptionMessageRegExp('(Suite: "Suite2" Tests: "Test1")');
185+
186+
// parse and generate suite object with mocked data and manifest
187+
$mockSuiteGenerator = SuiteGenerator::getInstance();
188+
$mockSuiteGenerator->generateAllSuites($manifest);
189+
}
190+
146191
/**
147192
* Function used to set mock for parser return and force init method to run between tests.
148193
*

src/Magento/FunctionalTestingFramework/Suite/SuiteGenerator.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,14 @@ private function validateTestsReferencedInSuite($suiteName, $testsReferenced, $o
178178
{
179179
$suiteRef = $originalSuiteName ?? $suiteName;
180180
$possibleTestRef = SuiteObjectHandler::getInstance()->getObject($suiteRef)->getTests();
181-
$errorMsg = "Cannot reference tests which are not declared as part of suite.";
181+
$errorMsg = "Cannot reference tests which are not declared as part of suite";
182182

183183
$invalidTestRef = array_diff($testsReferenced, array_keys($possibleTestRef));
184184

185185
if (!empty($invalidTestRef)) {
186-
throw new TestReferenceException($errorMsg, ['suite' => $suiteRef, 'test' => $invalidTestRef]);
186+
$testList = implode("\", \"", $invalidTestRef);
187+
$fullError = $errorMsg . " (Suite: \"{$suiteRef}\" Tests: \"{$testList}\")";
188+
throw new TestReferenceException($fullError, ['suite' => $suiteRef, 'test' => $invalidTestRef]);
187189
}
188190
}
189191

0 commit comments

Comments
 (0)