11import config.ScriptMode
22import file.CLICommand
33import file.CoreJassProvider
4+ import file.CuratedDependencies
45import file.ExitHandler
56import file.SetupApp
67import file.SetupMain
@@ -261,7 +262,7 @@ class GenerateTests {
261262 fun testGenerateWithoutNameUsesWizardPrompt () {
262263 val setup = SetupMain ()
263264 setup.parseArgs(listOf (" generate" ))
264- val answers = java.util.ArrayDeque (listOf (" wizardproject" , " jass" , " pre1.29" , " none" , " y" , " y" ))
265+ val answers = java.util.ArrayDeque (listOf (" wizardproject" , " jass" , " pre1.29" , " none" , " y" , " y" , " n " ))
265266 val prevPrompt = SetupApp .generatePrompt
266267 try {
267268 SetupApp .generatePrompt = { _, _ -> answers.removeFirst() }
@@ -275,13 +276,14 @@ class GenerateTests {
275276 Assert .assertEquals(setup.wc3Patch, CoreJassProvider .PRE_129_PATCH )
276277 Assert .assertTrue(setup.addAgents)
277278 Assert .assertTrue(setup.addGithubWorkflow)
279+ Assert .assertTrue(setup.curatedDependencyIds.isEmpty())
278280 }
279281
280282 @Test(priority = 10 )
281283 fun testGenerateWizardRejectsUnsupportedScriptModeAndPatchInput () {
282284 val setup = SetupMain ()
283285 setup.parseArgs(listOf (" generate" ))
284- val answers = java.util.ArrayDeque (listOf (" wizardproject" , " t" , " jass" , " t" , " 2" , " none" , " n" , " n" ))
286+ val answers = java.util.ArrayDeque (listOf (" wizardproject" , " t" , " jass" , " t" , " 2" , " none" , " n" , " n" , " n " ))
285287 val prevPrompt = SetupApp .generatePrompt
286288 try {
287289 SetupApp .generatePrompt = { _, _ -> answers.removeFirst() }
@@ -301,7 +303,7 @@ class GenerateTests {
301303 fun testGenerateWizardPreservesCliPatchDefault () {
302304 val setup = SetupMain ()
303305 setup.parseArgs(listOf (" generate" , " --wc3-patch" , " pre1.29" ))
304- val answers = java.util.ArrayDeque (listOf (" wizardproject" , " " , " " , " none" , " n" , " n" ))
306+ val answers = java.util.ArrayDeque (listOf (" wizardproject" , " " , " " , " none" , " n" , " n" , " n " ))
305307 val prevPrompt = SetupApp .generatePrompt
306308 try {
307309 SetupApp .generatePrompt = { _, _ -> answers.removeFirst() }
@@ -333,6 +335,57 @@ class GenerateTests {
333335 Assert .assertTrue(setup.commandArg.isBlank())
334336 }
335337
338+ @Test(priority = 10 )
339+ fun testCuratedDependencyCatalogResolvesTableLayout () {
340+ val dep = CuratedDependencies .findById(" table-layout" )
341+ Assert .assertNotNull(dep)
342+ Assert .assertEquals(dep!! .url, " https://github.com/Frotty/wurst-table-layout" )
343+ Assert .assertEquals(dep.summary, " wurst-table-layout (AI ready UI toolkit)" )
344+ Assert .assertEquals(CuratedDependencies .findById(" TABLE-LAYOUT" )?.id, " table-layout" )
345+ Assert .assertEquals(
346+ CuratedDependencies .matching(listOf (dep.url)).map { it.id },
347+ listOf (" table-layout" )
348+ )
349+ }
350+
351+ @Test(priority = 10 )
352+ fun testGenerateWithDepFlagSelectsCuratedDependency () {
353+ val setup = SetupMain ()
354+ setup.parseArgs(listOf (" generate" , " myproject" , " --with-dep" , " table-layout" ))
355+ Assert .assertEquals(setup.curatedDependencyIds, listOf (" table-layout" ))
356+ }
357+
358+ @Test(priority = 10 )
359+ fun testGenerateWithDepFlagIsDeduplicated () {
360+ val setup = SetupMain ()
361+ setup.parseArgs(listOf (" generate" , " myproject" , " --with-dep" , " table-layout" , " --with-dep" , " table-layout" ))
362+ Assert .assertEquals(setup.curatedDependencyIds, listOf (" table-layout" ))
363+ }
364+
365+ @Test(priority = 10 )
366+ fun testGenerateWithUnknownDepFlagExitsCleanly () {
367+ val code = catchExit2 {
368+ SetupMain ().parseArgs(listOf (" generate" , " myproject" , " --with-dep" , " does-not-exist" ))
369+ }
370+ Assert .assertEquals(code, 1 , " An unknown curated dependency id should be reported as a CLI error" )
371+ }
372+
373+ @Test(priority = 10 )
374+ fun testGenerateWizardSelectsCuratedDependency () {
375+ val setup = SetupMain ()
376+ setup.parseArgs(listOf (" generate" ))
377+ val answers = java.util.ArrayDeque (listOf (" wizardproject" , " lua" , " " , " none" , " n" , " n" , " y" ))
378+ val prevPrompt = SetupApp .generatePrompt
379+ try {
380+ SetupApp .generatePrompt = { _, _ -> answers.removeFirst() }
381+ Assert .assertTrue(SetupApp .prepareGenerate(setup))
382+ } finally {
383+ SetupApp .generatePrompt = prevPrompt
384+ }
385+
386+ Assert .assertEquals(setup.curatedDependencyIds, listOf (" table-layout" ))
387+ }
388+
336389 @Test(priority = 10 )
337390 fun testNoArgsExitsZeroWithoutOldUi () {
338391 val code = catchExit2 { SetupMain ().doMain(arrayOf()) }
0 commit comments