From 2626cf62a33d751d81a3c38d8f6c67e1616fab59 Mon Sep 17 00:00:00 2001 From: craigatk Date: Wed, 15 Jan 2020 16:33:29 -0600 Subject: [PATCH] Fixing issue with grouped test suites that have no test cases --- .../GroupedResultsConverter.kt | 3 +- .../GroupedTestResultsServiceTest.kt | 38 +++++++++++++++++++ .../parser/GroupedResultsXmlLoader.kt | 13 +++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 server/server-app/src/test/kotlin/projektor/incomingresults/GroupedTestResultsServiceTest.kt diff --git a/server/server-app/src/main/kotlin/projektor/incomingresults/GroupedResultsConverter.kt b/server/server-app/src/main/kotlin/projektor/incomingresults/GroupedResultsConverter.kt index 57946be44..ee3aae509 100644 --- a/server/server-app/src/main/kotlin/projektor/incomingresults/GroupedResultsConverter.kt +++ b/server/server-app/src/main/kotlin/projektor/incomingresults/GroupedResultsConverter.kt @@ -13,11 +13,12 @@ class GroupedResultsConverter( val incomingGroupedResults = groupedResultsParser.parseGroupedResults(groupedResultsXml) val groupedTestSuites = incomingGroupedResults.groupedTestSuites.map { + val nonEmptyTestSuites = testResultsProcessor.parseResultsBlob(it.testSuitesBlob).filter { testSuite -> !testSuite.testCases.isNullOrEmpty() } GroupedTestSuites( groupName = it.groupName, groupLabel = it.groupLabel, directory = it.directory, - testSuites = testResultsProcessor.parseResultsBlob(it.testSuitesBlob) + testSuites = nonEmptyTestSuites ) } diff --git a/server/server-app/src/test/kotlin/projektor/incomingresults/GroupedTestResultsServiceTest.kt b/server/server-app/src/test/kotlin/projektor/incomingresults/GroupedTestResultsServiceTest.kt new file mode 100644 index 000000000..a8ebe9720 --- /dev/null +++ b/server/server-app/src/test/kotlin/projektor/incomingresults/GroupedTestResultsServiceTest.kt @@ -0,0 +1,38 @@ +package projektor.incomingresults + +import kotlin.test.Test +import kotlin.test.assertNotNull +import kotlinx.coroutines.runBlocking +import org.awaitility.kotlin.await +import org.awaitility.kotlin.untilNotNull +import org.koin.core.inject +import projektor.DatabaseRepositoryTestCase +import projektor.parser.GroupedResultsXmlLoader +import projektor.parser.ResultsXmlLoader +import strikt.api.expectThat +import strikt.assertions.isNotEmpty + +class GroupedTestResultsServiceTest : DatabaseRepositoryTestCase() { + + @Test + fun `should filter out test suites that have no test cases`() { + val groupedTestResultsService: GroupedTestResultsService by inject() + + val publicId = randomPublicId() + + val resultXml = ResultsXmlLoader().cypressResults().joinToString("\n") + val groupedResultsJson = GroupedResultsXmlLoader().wrapResultsXmlInGroup(resultXml) + + runBlocking { groupedTestResultsService.doPersistTestResults(publicId, groupedResultsJson) } + + val testRun = await untilNotNull { testRunDao.fetchOneByPublicId(publicId.id) } + assertNotNull(testRun) + + val testSuites = testSuiteDao.fetchByTestRunId(testRun.id) + + testSuites.forEach { testSuite -> + val testCases = testCaseDao.fetchByTestSuiteId(testSuite.id) + expectThat(testCases).isNotEmpty() + } + } +} diff --git a/server/test-fixtures/src/main/kotlin/projektor/parser/GroupedResultsXmlLoader.kt b/server/test-fixtures/src/main/kotlin/projektor/parser/GroupedResultsXmlLoader.kt index f80fe5558..c2fd365a9 100644 --- a/server/test-fixtures/src/main/kotlin/projektor/parser/GroupedResultsXmlLoader.kt +++ b/server/test-fixtures/src/main/kotlin/projektor/parser/GroupedResultsXmlLoader.kt @@ -26,4 +26,17 @@ class GroupedResultsXmlLoader { return groupedResultsParser.serializeGroupedResults(groupedResults) } + + fun wrapResultsXmlInGroup(resultsXml: String): String { + val groupedTestSuites = GroupedTestSuites() + groupedTestSuites.groupName = "Group1" + groupedTestSuites.groupLabel = "unitTest" + groupedTestSuites.directory = "/test/unit" + groupedTestSuites.testSuitesBlob = resultsXml + + val groupedResults = GroupedResults() + groupedResults.groupedTestSuites = listOf(groupedTestSuites) + + return groupedResultsParser.serializeGroupedResults(groupedResults) + } }