internal/httpd/buildpages_test.go

332a13feaa444362bb4cc872ca95c62ccafcb64c
gitbay/internal/httpd/buildpages_test.go history · blame · raw

81 lines · 2131 bytes

 1package httpd
 2
 3import (
 4	"gitbay.org/gitbay/internal/control"
 5	"strings"
 6	"testing"
 7
 8	"gitbay.org/gitbay/internal/store"
 9	"gitbay.org/gitbay/internal/web"
10)
11
12func testRepoPage() repoPage {
13	var p repoPage
14	p.Repo = store.Repo{OwnerName: "krz", Name: "gitbay", DefaultBranch: "main"}
15	p.Host = "gitbay.org"
16	return p
17}
18
19// The build pages read their data from the build commands' JSON now, not
20// from store.Build. A renamed field would be a blank cell rather than a
21// compile error, so render both pages and look for the values.
22func TestBuildsPageRendersCommandOutput(t *testing.T) {
23	var sb strings.Builder
24	err := web.Render(&sb, "builds.html", struct {
25		repoPage
26		Builds   []control.BuildOut
27		Jobs     []control.JobOut
28		CanWrite bool
29		Notice   string
30	}{
31		testRepoPage(),
32		[]control.BuildOut{{
33			Number: 60, Job: "build", Status: "success",
34			SHA: "ff6271a9d4570cd46f169091637a9d2e40ad5c2b",
35			Ref: "cli-coverage", CreatedAt: "2026-08-28T04:42:54Z",
36		}},
37		[]control.JobOut{{Name: "build"}, {Name: "nightly", Schedule: "0 3 * * *"}},
38		true, "",
39	})
40	if err != nil {
41		t.Fatalf("render: %v", err)
42	}
43	out := sb.String()
44	for _, want := range []string{
45		"#60 build", "success", "cli-coverage", "ff6271a9d4",
46		`value="build"`, `value="nightly"`, "schedule 0 3 * * *",
47	} {
48		if !strings.Contains(out, want) {
49			t.Errorf("builds.html missing %q", want)
50		}
51	}
52}
53
54func TestBuildPageRendersCommandOutput(t *testing.T) {
55	var sb strings.Builder
56	err := web.Render(&sb, "build.html", struct {
57		repoPage
58		Build control.BuildOut
59		Log   string
60	}{
61		testRepoPage(),
62		control.BuildOut{
63			Number: 60, Job: "build", Status: "success",
64			SHA: "ff6271a9d4570cd46f169091637a9d2e40ad5c2b", Ref: "cli-coverage",
65			CreatedAt: "2026-08-28T04:42:54Z", FinishedAt: "2026-08-28T04:43:06Z",
66		},
67		"step 1 ok",
68	})
69	if err != nil {
70		t.Fatalf("render: %v", err)
71	}
72	out := sb.String()
73	for _, want := range []string{
74		"Build 60", "success", "build on cli-coverage", "ff6271a9d4",
75		"2026-08-28 04:42", "2026-08-28 04:43", "step 1 ok",
76	} {
77		if !strings.Contains(out, want) {
78			t.Errorf("build.html missing %q", want)
79		}
80	}
81}