From 1df0f67f592c9d4e91ff68ba49fee78430faf108 Mon Sep 17 00:00:00 2001 From: adcondev <38170282+adcondev@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:22:53 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=A7=AA=20Add=20tests=20for=20GetFamil?= =?UTF-8?q?yNames=20and=20refactor=20implementation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- go.mod | 2 +- internal/service/registry.go | 12 +++++++++-- internal/service/registry_test.go | 33 +++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 internal/service/registry_test.go diff --git a/go.mod b/go.mod index 75a1b9f..2d311d5 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/adcondev/poster-tuis -go 1.25 +go 1.24 require ( github.com/charmbracelet/bubbles v0.21.1 diff --git a/internal/service/registry.go b/internal/service/registry.go index 9fcf3b9..975a60e 100644 --- a/internal/service/registry.go +++ b/internal/service/registry.go @@ -1,6 +1,8 @@ package service import ( + "sort" + "github.com/adcondev/poster-tuis/internal/assets" "github.com/adcondev/poster-tuis/internal/config" ) @@ -57,7 +59,13 @@ func GetServiceRegistry() map[string][]Variant { } } -// GetFamilyNames returns the ordered list of service family identifiers +// GetFamilyNames returns a sorted list of available service families. func GetFamilyNames() []string { - return []string{"scale", "ticket"} + reg := GetServiceRegistry() + names := make([]string, 0, len(reg)) + for name := range reg { + names = append(names, name) + } + sort.Strings(names) + return names } diff --git a/internal/service/registry_test.go b/internal/service/registry_test.go new file mode 100644 index 0000000..56cefcd --- /dev/null +++ b/internal/service/registry_test.go @@ -0,0 +1,33 @@ +package service + +import ( + "reflect" + "sort" + "testing" +) + +func TestGetFamilyNames(t *testing.T) { + // Call the function + names := GetFamilyNames() + + // Get the registry to compare + reg := GetServiceRegistry() + + // 1. Verify the length + if len(names) != len(reg) { + t.Fatalf("GetFamilyNames() returned %d items, expected %d", len(names), len(reg)) + } + + // 2. Verify all keys from the registry are present + expectedNames := make([]string, 0, len(reg)) + for name := range reg { + expectedNames = append(expectedNames, name) + } + + // 3. Verify it is sorted + sort.Strings(expectedNames) + + if !reflect.DeepEqual(names, expectedNames) { + t.Errorf("GetFamilyNames() = %v, want %v", names, expectedNames) + } +} From 6750d66648f5eef7bbc1b0063203cf8c0347f338 Mon Sep 17 00:00:00 2001 From: adcondev <38170282+adcondev@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:35:45 +0000 Subject: [PATCH 2/4] test: Add tests for GetFamilyNames and refactor implementation Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 2d311d5..75a1b9f 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/adcondev/poster-tuis -go 1.24 +go 1.25 require ( github.com/charmbracelet/bubbles v0.21.1 From 494ba12a44c4546f5362eb18eeff335533cfe108 Mon Sep 17 00:00:00 2001 From: adcondev <38170282+adcondev@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:50:40 +0000 Subject: [PATCH 3/4] test: Add tests for GetFamilyNames and refactor implementation Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- go.mod | 4 +++- internal/ui/builders.go | 32 +++++++++++++++++++++----------- internal/ui/update.go | 6 +++--- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 75a1b9f..7709919 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/adcondev/poster-tuis -go 1.25 +go 1.24.2 + +toolchain go1.24.3 require ( github.com/charmbracelet/bubbles v0.21.1 diff --git a/internal/ui/builders.go b/internal/ui/builders.go index a5dcd88..ab99ca3 100644 --- a/internal/ui/builders.go +++ b/internal/ui/builders.go @@ -1,5 +1,8 @@ package ui + + + import ( "fmt" "log" @@ -9,6 +12,13 @@ import ( "github.com/adcondev/poster-tuis/internal/service" ) +const ( + actionBack = "back" + actionForceStop = "force-stop" + titleVolver = "Volver" + iconBack = "[<]" +) + // ══════════════════════════════════════════════════════════════ // Menu Item Type // ══════════════════════════════════════════════════════════════ @@ -91,10 +101,10 @@ func buildFamilyMenuItems(fs service.FamilyStatus) []list.Item { data: "install-remote", }, menuItem{ - title: "Volver", + title: titleVolver, description: "Regresar al menú principal", - icon: "[<]", - data: "back", + icon: iconBack, + data: actionBack, }, } } @@ -130,7 +140,7 @@ func buildFamilyMenuItems(fs service.FamilyStatus) []list.Item { title: "Forzar Detención", description: "El servicio está en transición — forzar detención", icon: "[!]", - data: "force-stop", + data: actionForceStop, }) case service.StatusUnknown: @@ -138,7 +148,7 @@ func buildFamilyMenuItems(fs service.FamilyStatus) []list.Item { title: "Forzar Detención", description: "Estado desconocido — intentar forzar detención del servicio", icon: "[!]", - data: "force-stop", + data: actionForceStop, }) default: log.Printf("Estado inesperado para %s: %s", installed, status.String()) @@ -159,10 +169,10 @@ func buildFamilyMenuItems(fs service.FamilyStatus) []list.Item { data: "uninstall", }, menuItem{ - title: "Volver", + title: titleVolver, description: "Regresar al menú principal", - icon: "[<]", - data: "back", + icon: iconBack, + data: actionBack, }, ) @@ -189,10 +199,10 @@ func buildLogsMenuItems() []list.Item { data: "open-dir", }, menuItem{ - title: "Volver", + title: titleVolver, description: "Regresar al menú de servicio", - icon: "[<]", - data: "back", + icon: iconBack, + data: actionBack, }, } } diff --git a/internal/ui/update.go b/internal/ui/update.go index 915a3a3..f496473 100644 --- a/internal/ui/update.go +++ b/internal/ui/update.go @@ -211,7 +211,7 @@ func (m Model) handleFamilyKey(msg tea.KeyMsg) (tea.Model, tea.Cmd) { } switch selected.data { - case "back": + case actionBack: return m.goToDashboard() case "install-local": @@ -236,7 +236,7 @@ func (m Model) handleFamilyKey(msg tea.KeyMsg) (tea.Model, tea.Cmd) { } return m.executeAction("Detener Servicio", mgr.Stop) - case "force-stop": + case actionForceStop: mgr := m.getActiveManager() if mgr == nil { m.statusMessage = "No se pudo determinar el servicio a detener." @@ -313,7 +313,7 @@ func (m Model) handleLogsKey(msg tea.KeyMsg) (tea.Model, tea.Cmd) { m.statusMessage = "Abriendo carpeta de logs..." return m, nil - case "back": + case actionBack: return m.returnToFamilyMenu() } } From 2d8a462246fb8566b0da7b7fe603afc161a091c0 Mon Sep 17 00:00:00 2001 From: adcondev <38170282+adcondev@users.noreply.github.com> Date: Mon, 1 Jun 2026 01:04:42 +0000 Subject: [PATCH 4/4] test: add tests for GetFamilyNames and refactor implementation Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- go.mod | 4 +--- internal/ui/builders.go | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 7709919..75a1b9f 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/adcondev/poster-tuis -go 1.24.2 - -toolchain go1.24.3 +go 1.25 require ( github.com/charmbracelet/bubbles v0.21.1 diff --git a/internal/ui/builders.go b/internal/ui/builders.go index ab99ca3..628765b 100644 --- a/internal/ui/builders.go +++ b/internal/ui/builders.go @@ -1,8 +1,5 @@ package ui - - - import ( "fmt" "log"