Files
spinifex/internal/awsmodel/write_test.go
T
Julian Sommer e2fb37c0ac docs: publish only the AWS operations Spinifex serves
The coverage pages led with a percentage and an "x of y" count, and every
table listed the modelled operations Spinifex does not implement, which reads
as a scorecard against AWS rather than a statement of what the platform serves.

A published page now opens with the operation count alone, tables the
operations the gateway serves, and carries a separate not-applicable table with
each reason inline instead of footnotes. The unimplemented operations and the
counts move to docs/coverage/internal-report.md, which no docs-site slug points
at. A service with no implemented operations has no publishable page.
2026-09-15 10:28:35 +10:00

135 lines
3.8 KiB
Go

package awsmodel_test
import (
"os"
"path/filepath"
"strings"
"testing"
. "github.com/mulgadc/spinifex/internal/awsmodel"
)
// stagePages copies the checked-in metadata into a temp directory so a write
// test cannot touch docs/coverage.
func stagePages(t *testing.T) string {
t.Helper()
dir := t.TempDir()
contents, err := os.ReadFile(filepath.Join("..", "..", "docs", "coverage", "pages.json"))
if err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dir, "pages.json"), contents, 0o644); err != nil {
t.Fatal(err)
}
return dir
}
func stsCoverage(t *testing.T) OperationCoverage {
t.Helper()
coverage, err := CompareOperations(STS, DispatchInventory{Registered: []string{"AssumeRole"}})
if err != nil {
t.Fatal(err)
}
return coverage
}
func TestWritePagesWritesAServicePageAndTheIndex(t *testing.T) {
dir := stagePages(t)
if err := WritePages(dir, []OperationCoverage{stsCoverage(t)}); err != nil {
t.Fatal(err)
}
service, err := os.ReadFile(filepath.Join(dir, "sts", "README.md"))
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(service), "| `AssumeRole` |") {
t.Errorf("service page is missing its operation table:\n%s", service)
}
index, err := os.ReadFile(filepath.Join(dir, "README.md"))
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(index), "[STS](/coverage/sts)") {
t.Errorf("index does not link the service page:\n%s", index)
}
}
// The gaps the pages leave out are still written down, in a file the docs site
// is not configured to render.
func TestWritePagesWritesTheInternalReport(t *testing.T) {
dir := stagePages(t)
coverage := stsCoverage(t)
if err := WritePages(dir, []OperationCoverage{coverage}); err != nil {
t.Fatal(err)
}
report, err := os.ReadFile(filepath.Join(dir, "internal-report.md"))
if err != nil {
t.Fatal(err)
}
for _, operation := range coverage.Missing {
if !strings.Contains(string(report), "- `"+operation+"`") {
t.Errorf("internal report omits unimplemented operation %q:\n%s", operation, report)
}
}
if !strings.Contains(string(report), "% ") && !strings.Contains(string(report), "%)") {
t.Errorf("internal report carries no coverage figure:\n%s", report)
}
}
func TestWritePagesIncludesAnIntroAndOverwritesTheGeneratedPage(t *testing.T) {
dir := stagePages(t)
pageDir := filepath.Join(dir, "sts")
if err := os.MkdirAll(pageDir, 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(pageDir, "intro.md"), []byte("### Scope\n\nCarried prose.\n"), 0o644); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(pageDir, "README.md"), []byte("stale hand edit"), 0o644); err != nil {
t.Fatal(err)
}
if err := WritePages(dir, []OperationCoverage{stsCoverage(t)}); err != nil {
t.Fatal(err)
}
page, err := os.ReadFile(filepath.Join(pageDir, "README.md"))
if err != nil {
t.Fatal(err)
}
if strings.Contains(string(page), "stale hand edit") {
t.Error("a hand edit to a generated page survived regeneration")
}
if !strings.Contains(string(page), "### Scope\n\nCarried prose.") {
t.Errorf("page does not carry its intro:\n%s", page)
}
}
// S3 has no page metadata, so it must be skipped rather than crashing the run
// or publishing a page with no honest number on it.
func TestWritePagesSkipsAServiceWithNoMetadata(t *testing.T) {
dir := stagePages(t)
coverage, err := CompareOperations(S3, DispatchInventory{Opaque: true, Note: "Served elsewhere."})
if err != nil {
t.Fatal(err)
}
if err := WritePages(dir, []OperationCoverage{coverage}); err != nil {
t.Fatal(err)
}
if _, err := os.Stat(filepath.Join(dir, "s3-api-coverage")); !os.IsNotExist(err) {
t.Errorf("a page was written for a service with no metadata: %v", err)
}
}
func TestWritePagesReportsMissingMetadata(t *testing.T) {
if err := WritePages(t.TempDir(), nil); err == nil {
t.Fatal("WritePages accepted a directory with no pages.json")
}
}