Skip to content

Commit 772afa8

Browse files
committed
add test for dataset deletion on scenario deletion
1 parent 23cf958 commit 772afa8

File tree

1 file changed

+55
-11
lines changed

1 file changed

+55
-11
lines changed

scenario/src/integrationTest/kotlin/com/cosmotech/scenario/service/ScenarioServiceIntegrationTest.kt

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.cosmotech.dataset.domain.Dataset
2323
import com.cosmotech.dataset.domain.DatasetAccessControl
2424
import com.cosmotech.dataset.domain.DatasetConnector
2525
import com.cosmotech.dataset.domain.DatasetSecurity
26+
import com.cosmotech.dataset.repository.DatasetRepository
2627
import com.cosmotech.organization.api.OrganizationApiService
2728
import com.cosmotech.organization.domain.Organization
2829
import com.cosmotech.organization.domain.OrganizationAccessControl
@@ -50,10 +51,10 @@ import com.ninjasquad.springmockk.MockkBean
5051
import com.ninjasquad.springmockk.SpykBean
5152
import com.redis.om.spring.RediSearchIndexer
5253
import com.redis.testcontainers.RedisStackContainer
54+
import com.redislabs.redisgraph.impl.api.RedisGraph
5355
import io.mockk.every
5456
import io.mockk.impl.annotations.MockK
5557
import io.mockk.junit5.MockKExtension
56-
import io.mockk.mockk
5758
import io.mockk.mockkStatic
5859
import java.util.UUID
5960
import kotlin.test.assertEquals
@@ -104,6 +105,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
104105
@Autowired lateinit var connectorApiService: ConnectorApiService
105106
@Autowired lateinit var organizationApiService: OrganizationApiService
106107
@SpykBean @Autowired lateinit var datasetApiService: DatasetApiService
108+
@Autowired lateinit var datasetRepository: DatasetRepository
107109
@Autowired lateinit var solutionApiService: SolutionApiService
108110
@Autowired lateinit var workspaceApiService: WorkspaceApiService
109111
@Autowired lateinit var scenarioApiService: ScenarioApiService
@@ -164,6 +166,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
164166

165167
dataset = makeDataset(organizationSaved.id!!, "Dataset", connectorSaved)
166168
datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
169+
materializeTwingraph()
167170

168171
solution = makeSolution(organizationSaved.id!!)
169172
solutionSaved = solutionApiService.createSolution(organizationSaved.id!!, solution)
@@ -178,9 +181,7 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
178181
solutionSaved.id!!,
179182
"Scenario",
180183
mutableListOf(datasetSaved.id!!))
181-
every { datasetApiService.findDatasetById(any(), any()) } returns
182-
datasetSaved.apply { status = Dataset.Status.READY }
183-
every { datasetApiService.createSubDataset(any(), any(), any()) } returns mockk(relaxed = true)
184+
184185
scenarioSaved =
185186
scenarioApiService.createScenario(organizationSaved.id!!, workspaceSaved.id!!, scenario)
186187
}
@@ -306,13 +307,8 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
306307
@Test
307308
fun `test parent scenario operations as User Admin`() {
308309

309-
logger.info(
310-
"should create a child Scenario with dataset different from parent and " +
311-
"assert the dataset list is the same as parent")
312-
val dataset = makeDataset(organizationSaved.id!!, "Dataset", connectorSaved)
313-
val datasetSaved = datasetApiService.createDataset(organizationSaved.id!!, dataset)
314-
315-
logger.info("should create a tree of Scenarios")
310+
logger.info("should create a child Scenario with dataset different from parent")
311+
logger.info("Create a tree of Scenarios")
316312
val idMap = mutableMapOf<Int, String>()
317313
IntRange(1, 5).forEach {
318314
var scenario =
@@ -674,6 +670,41 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
674670
}
675671
}
676672

673+
@Test
674+
fun `test deleting dataset with scenario`() {
675+
scenarioApiService.deleteScenario(
676+
organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!)
677+
678+
assertDoesNotThrow {
679+
datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!)
680+
}
681+
scenarioSaved.datasetList!!.forEach { dataset ->
682+
assertThrows<CsmResourceNotFoundException> {
683+
datasetApiService.findDatasetById(organizationSaved.id!!, dataset)
684+
}
685+
}
686+
}
687+
688+
@Test
689+
fun `test do not delete old style dataset with scenario`() {
690+
// old style dataset doesn't have the creationDate property set
691+
// set all dataset in scenario datasetList to old style
692+
scenarioSaved.datasetList!!.forEach { datasetId ->
693+
val scenarioDataset = datasetApiService.findDatasetById(organizationSaved.id!!, datasetId)
694+
datasetRepository.save(scenarioDataset.apply { creationDate = null })
695+
}
696+
697+
scenarioApiService.deleteScenario(
698+
organizationSaved.id!!, workspaceSaved.id!!, scenarioSaved.id!!)
699+
700+
assertDoesNotThrow {
701+
datasetApiService.findDatasetById(organizationSaved.id!!, datasetSaved.id!!)
702+
}
703+
scenarioSaved.datasetList!!.forEach { dataset ->
704+
assertDoesNotThrow { datasetApiService.findDatasetById(organizationSaved.id!!, dataset) }
705+
}
706+
}
707+
677708
private fun makeWorkspaceEventHubInfo(eventHubAvailable: Boolean): WorkspaceEventHubInfo {
678709
return WorkspaceEventHubInfo(
679710
eventHubNamespace = "eventHubNamespace",
@@ -805,4 +836,17 @@ class ScenarioServiceIntegrationTest : CsmRedisTestBase() {
805836
ScenarioAccessControl(CONNECTED_ADMIN_USER, ROLE_ADMIN),
806837
ScenarioAccessControl(userName, role))))
807838
}
839+
840+
private fun materializeTwingraph(
841+
dataset: Dataset = datasetSaved,
842+
createTwingraph: Boolean = true
843+
): Dataset {
844+
dataset.apply {
845+
if (createTwingraph) {
846+
RedisGraph(jedisPool).query(this.twingraphId, "MATCH (n:labelrouge) return 1")
847+
}
848+
this.status = Dataset.Status.READY
849+
}
850+
return datasetRepository.save(dataset)
851+
}
808852
}

0 commit comments

Comments
 (0)