Skip to content
quarry Artifact [8e5c2fc381]
Login

Artifact [8e5c2fc381]

Artifact 8e5c2fc381b0f3a10142e73da52eeb7c194eba887df6915d6dfdd04acdddb145:


package web

import (
	"os"
	"path/filepath"
	"strings"
	"testing"
)

// A LOOKING aid for the two surfaces a signed-in reader actually lands
// on — the dashboard and a person page. Off unless QUARRY_SHOT_REACH is
// set; the file is written beside a quarry.css because every page links
// its sheet by URL.
func TestWriteTeamReachShots(t *testing.T) {
	out := os.Getenv("QUARRY_SHOT_REACH")
	if out == "" {
		t.Skip("QUARRY_SHOT_REACH unset")
	}
	dir := filepath.Dir(out)
	if err := os.WriteFile(filepath.Join(dir, "quarry.css"), []byte(sheet), 0o644); err != nil {
		t.Fatal(err)
	}
	teams := []teamRow{
		{Name: "craft-design-group", Title: "Craft Design Group", Members: 3, Repos: 2},
		{Name: "firestorm-dataworks", Title: "FireStorm DataWorks", Members: 1, Repos: 0},
	}

	d := dashData{User: "dmestas", Teams: teams, Total: 412, Depth: 30}
	d.Repos = append(d.Repos, dashRepoRow{Name: "quarry", Role: "admin", Description: "a forge front-end for zit",
		LastActivity: "2026-09-13T06:00:00Z", Open: 14})
	var dash strings.Builder
	if err := dashboardPage.Execute(&dash, pageData{Title: "Dashboard", HideH1: true,
		SheetURL: "quarry.css", User: "dmestas", Dash: &d}); err != nil {
		t.Fatal(err)
	}
	if err := os.WriteFile(out, []byte(dash.String()), 0o644); err != nil {
		t.Fatal(err)
	}

	p := personRow{User: "dmestas", Teams: teams,
		Appearances: []personAppearance{
			{Repo: "quarry", Events: 3709, First: "2026-06-01T00:00:00Z", Last: "2026-09-13T06:00:00Z"},
			{Repo: "zit", Events: 288, First: "2026-07-02T00:00:00Z", Last: "2026-09-11T18:00:00Z"},
		}}
	var person strings.Builder
	if err := personPage.Execute(&person, pageData{Title: "dmestas", HideH1: true,
		SheetURL: "quarry.css", Person: p}); err != nil {
		t.Fatal(err)
	}
	if err := os.WriteFile(filepath.Join(dir, "person-teams.html"),
		[]byte(person.String()), 0o644); err != nil {
		t.Fatal(err)
	}
	t.Logf("ok: wrote %s and person-teams.html", out)
}