internal/httpd/depspage_test.go
48 lines · 1390 bytes
1package httpd
2
3import (
4 "strings"
5 "testing"
6
7 "gitbay.org/gitbay/internal/control"
8 "gitbay.org/gitbay/internal/web"
9)
10
11// The settings page renders what `repo deps status` reports, not just the
12// toggle (#164). A renamed field would be a blank cell rather than a
13// compile error, so render the page and look for the values.
14func TestSettingsPageRendersDepsStatus(t *testing.T) {
15 var sb strings.Builder
16 err := web.Render(&sb, "settings.html", settingsPage{
17 repoPage: testRepoPage(),
18 DepsEnabled: true,
19 Deps: control.DepsOut{
20 Enabled: true, LastCheck: "2026-09-03T08:20:25Z", IssueNumber: 140,
21 Behind: []control.DepBehind{{Ecosystem: "go", Name: "golang.org/x/crypto",
22 Current: "v0.31.0", Latest: "v0.42.0"}},
23 },
24 })
25 if err != nil {
26 t.Fatal(err)
27 }
28 page := sb.String()
29 for _, want := range []string{
30 "2026-09-03T08:20:25Z", "golang.org/x/crypto", "v0.31.0", "v0.42.0",
31 `href="/krz/gitbay/issues/140"`,
32 } {
33 if !strings.Contains(page, want) {
34 t.Errorf("settings page does not show %q", want)
35 }
36 }
37}
38
39// With checks off, none of the report shows.
40func TestSettingsPageHidesDepsStatusWhenOff(t *testing.T) {
41 var sb strings.Builder
42 if err := web.Render(&sb, "settings.html", settingsPage{repoPage: testRepoPage()}); err != nil {
43 t.Fatal(err)
44 }
45 if strings.Contains(sb.String(), "Last checked") {
46 t.Error("the report shows with checks off")
47 }
48}