diff --git a/TODO.md b/TODO.md index ff43640..9802577 100644 --- a/TODO.md +++ b/TODO.md @@ -20,6 +20,11 @@ regress. # Completed Steps +- 2026-09-29: The app page shows the app's branch as a label in its title, next + to the status badge, instead of after the repository under it; the app list + shows the Branch column right after Name and scrolls sideways on narrow + screens instead of cutting columns off (#240). + - 2026-09-29: `docker-compose.yml` now sets `UPAAS_PORT` to 8080 as well as `PORT`, since upaas reads `UPAAS_PORT` first and a `UPAAS_PORT` in `.env` made it listen away from the port mapping and healthcheck; the README's Compose diff --git a/internal/handlers/app_branch_test.go b/internal/handlers/app_branch_test.go new file mode 100644 index 0000000..a130971 --- /dev/null +++ b/internal/handlers/app_branch_test.go @@ -0,0 +1,76 @@ +package handlers_test + +import ( + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "sneak.berlin/go/upaas/internal/service/app" +) + +// TestAppBranchIsShown checks that an app's branch can be read from the app +// page title and from the app list without opening the edit page. +func TestAppBranchIsShown(t *testing.T) { + t.Parallel() + + testCtx := setupTestHandlers(t) + + createdApp, err := testCtx.appSvc.CreateApp(t.Context(), app.CreateAppInput{ + Name: "branch-shown-app", + RepoURL: "git@example.com:user/branch-shown-app.git", + Branch: "staging", + }) + require.NoError(t, err) + + t.Run("in the app page title next to the status badge", func(t *testing.T) { + t.Parallel() + + request := httptest.NewRequestWithContext( + t.Context(), http.MethodGet, "/apps/"+createdApp.ID, nil, + ) + request = addChiURLParams(request, map[string]string{"id": createdApp.ID}) + recorder := httptest.NewRecorder() + + testCtx.handlers.HandleAppDetail().ServeHTTP(recorder, request) + + require.Equal(t, http.StatusOK, recorder.Code) + + // The title row runs from the app name heading to the end of its div. + _, afterHeading, found := strings.Cut(recorder.Body.String(), "
{{.App.RepoURL}}@{{.App.Branch}}
+{{.App.RepoURL}}
| Name | -Repository | Branch | +Repository | Status | Last Deploy | Deploys | @@ -41,8 +42,8 @@ {{.App.Name}} -{{.App.RepoURL}} | {{.App.Branch}} | +{{.App.RepoURL}} | {{if eq .App.Status "running"}} Running @@ -78,6 +79,7 @@ {{end}} |
|---|