internal/httpd/buildpages_test.go

4744c629ed4f0158bdea7d0f1d207fdccb1f7f99
gitbay/internal/httpd/buildpages_test.go history · blame · raw

80 lines · 2051 bytes

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