@@ -230,7 +230,7 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
230230 ]
231231 }
232232
233- def " when a definition file is deleted and the reference and latest files haven't been, the system should regenerate" (List<String > branches) {
233+ def " when a definition file is deleted and the reference and latest files haven't been changed , the system should regenerate" (List<String > branches) {
234234 given :
235235 String definitionName = " test_tv"
236236 referencedTransportVersion(definitionName)
@@ -248,6 +248,7 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
248248 result. task(" :myserver:generateTransportVersionDefinition" ). outcome == TaskOutcome . SUCCESS
249249 result. task(" :myserver:validateTransportVersionDefinitions" ). outcome == TaskOutcome . SUCCESS
250250 validateDefinitionFile(definitionName, originalLatestFiles)
251+ def latestFilesAfterGeneration = readLatestFiles(branches)
251252
252253 when : " The definition file is deleted"
253254 file(" myserver/src/main/resources/transport/definitions/named/${ definitionName} .csv" ). delete()
@@ -273,6 +274,14 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
273274 secondResult. task(" :myserver:validateTransportVersionDefinitions" ). outcome == TaskOutcome . SUCCESS
274275 validateDefinitionFile(definitionName, originalLatestFiles)
275276
277+ and : " The latest files should remain unchanged"
278+ latestFilesAfterGeneration. forEach { originalLatest ->
279+ def latest = readLatestFile(originalLatest. branch)
280+ assert latest. branch == originalLatest. branch
281+ assert latest. id == originalLatest. id
282+ assert latest. name == originalLatest. name
283+ }
284+
276285 where :
277286 branches << [
278287 [" 9.2" ],
@@ -300,6 +309,7 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
300309 validateDefinitionFile(definitionName, originalLatestFiles)
301310
302311 when : " The latest files are modified"
312+ List<LatestFile > latestFilesAfterGeneration = readLatestFiles(branches)
303313 originalLatestFiles. forEach {
304314 latestTransportVersion(it. branch, it. name + " _modification" , (it. id + 7 ). toString())
305315 }
@@ -316,6 +326,13 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
316326 secondResult. task(" :myserver:validateTransportVersionDefinitions" ). outcome == TaskOutcome . SUCCESS
317327 validateDefinitionFile(definitionName, originalLatestFiles)
318328
329+ latestFilesAfterGeneration. forEach { originalLatest ->
330+ def latest = readLatestFile(originalLatest. branch)
331+ assert latest. branch == originalLatest. branch
332+ assert latest. id == originalLatest. id
333+ assert latest. name == originalLatest. name
334+ }
335+
319336 where :
320337 branches << [
321338 [" 9.2" ],
@@ -324,15 +341,15 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
324341 }
325342
326343 // TODO legitimate bug, need to always clean up latest for patch versions
327- def " When a definition is created with a patch version, then generation is called without the patch version, the state should be updated " () {
344+ def " When a definition is created with a patch version, then generation is called without the patch version, the latest patch file should be reverted " () {
328345 given :
329346 String definitionName = " test_tv"
330347 referencedTransportVersion(definitionName)
331348 List<String > branches = [" 9.2" , " 9.1" ]
332349 List<String > mainBranch = [" 9.2" ]
333350 List<LatestFile > originalLatestFilesWithPatch = readLatestFiles(branches)
334351 List<LatestFile > originalLatestMainFile = readLatestFiles(mainBranch)
335- String originalLatestPatchText = file( " myserver/src/main/resources/transport/latest/ 9.1.csv " ) . text . strip( )
352+ LatestFile originalLatestPatchFile = readLatestFile( " 9.1" )
336353
337354 when : " The definition is generated with a patch version"
338355 def result = gradleRunner(
@@ -358,14 +375,64 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
358375 secondResult. task(" :myserver:generateTransportVersionDefinition" ). outcome == TaskOutcome . SUCCESS
359376 secondResult. task(" :myserver:validateTransportVersionDefinitions" ). outcome == TaskOutcome . SUCCESS
360377 validateDefinitionFile(definitionName, originalLatestMainFile)
361- originalLatestPatchText == file(" myserver/src/main/resources/transport/latest/9.1.csv" ). text. strip()
378+
379+ and : " The latest file for the patch version should be reverted to the original state"
380+ LatestFile latestPatchFile = readLatestFile(" 9.1" )
381+ latestPatchFile. id == originalLatestPatchFile. id
382+ latestPatchFile. name == originalLatestPatchFile. name
383+ latestPatchFile. branch == originalLatestPatchFile. branch
362384 }
363385
364- def " Latest files mangled by a merge conflict should be regenerated, and the most recent definition file should be updated" () {
365386
387+ def " When a reference is deleted, the system should delete the definition and revert the latest files" (List<String > branches) {
388+ given :
389+ String definitionName = " test_tv"
390+ referencedTransportVersion(definitionName)
391+ List<LatestFile > originalLatestFiles = readLatestFiles(branches)
392+
393+ when : " The definition is generated"
394+ def result = gradleRunner(
395+ " :myserver:validateTransportVersionDefinitions" ,
396+ " :myserver:generateTransportVersionDefinition" ,
397+ " --name=" + definitionName,
398+ " --branches=" + branches. join(" ," )
399+ ). build()
400+
401+ then : " The generation task should succeed and create the definition file"
402+ result. task(" :myserver:generateTransportVersionDefinition" ). outcome == TaskOutcome . SUCCESS
403+ result. task(" :myserver:validateTransportVersionDefinitions" ). outcome == TaskOutcome . SUCCESS
404+ validateDefinitionFile(definitionName, originalLatestFiles)
405+
406+ when : " The reference is deleted and the generation is run again"
407+ deleteTransportVersionReference(definitionName)
408+ def secondResult = gradleRunner(
409+ " :myserver:validateTransportVersionDefinitions" ,
410+ " :myserver:generateTransportVersionDefinition" ,
411+ " --branches=" + branches. join(" ," )
412+ ). build()
413+
414+ then : " The generation task should succeed and the definition file should be deleted"
415+ ! file(" myserver/src/main/resources/transport/definitions/named/${ definitionName} .csv" ). exists()
416+ secondResult. task(" :myserver:generateTransportVersionDefinition" ). outcome == TaskOutcome . SUCCESS
417+ secondResult. task(" :myserver:validateTransportVersionDefinitions" ). outcome == TaskOutcome . SUCCESS
418+
419+ and : " The latest files should be reverted to their original state"
420+ originalLatestFiles. forEach { originalLatest ->
421+ def latest = readLatestFile(originalLatest. branch)
422+ assert latest. branch == originalLatest. branch
423+ assert latest. id == originalLatest. id
424+ assert latest. name == originalLatest. name
425+ }
426+
427+ where :
428+ branches << [
429+ [" 9.2" ],
430+ [" 9.2" , " 9.1" ]
431+ ]
366432 }
367433
368- def " When a reference is deleted, the system should revert to the original state" () {
434+
435+ def " Latest files mangled by a merge conflict should be regenerated, and the most recent definition file should be updated" () {
369436
370437 }
371438
0 commit comments