package console import ( "bytes" "strings" "testing" ) func TestOverviewRendersMixedAndPartialObservedVersions(t *testing.T) { deployment := DeploymentStatus{ RouteCount: 3, ReportableCount: 3, ReportedCount: 2, UnknownCount: 1, Versions: []DeploymentVersion{{Version: "v1", Count: 1}, {Version: "v2", Count: 1}}, } p := page{ Detail: &AppView{}, Account: &Account{}, StatusCopy: approvedStatusCopy, Overview: OverviewStats{Deployment: deployment, Verdict: "unknown", VerdictLabel: "Can't tell right now"}, } var out bytes.Buffer if err := templates.ExecuteTemplate(&out, "app_overview", p); err != nil { t.Fatal(err) } body := out.String() for _, want := range []string{ "Observed versions", "2 of 3 instances report a version.", "v1", "v2", "Some instances have not reported a version.", } { if !strings.Contains(body, want) { t.Errorf("missing %q", want) } } } func TestReleasesRendersApprovedCandidateText(t *testing.T) { p := page{ Detail: &AppView{}, Account: &Account{}, StatusCopy: approvedStatusCopy, ReleaseSummary: ReleaseSummary{NextVersion: "v9"}, } var out bytes.Buffer if err := templates.ExecuteTemplate(&out, "app_releases", p); err != nil { t.Fatal(err) } if !strings.Contains(out.String(), "Candidate for promotion: v9.") { t.Fatal("release summary did not render the approved candidate text") } } func TestStaticOnlyPagesDoNotClaimAMissingVersionReport(t *testing.T) { deployment := DeploymentStatus{RouteCount: 1} p := page{ Detail: &AppView{}, Account: &Account{}, StatusCopy: approvedStatusCopy, Overview: OverviewStats{Deployment: deployment, Verdict: "ok", VerdictLabel: "All good"}, ReleaseSummary: ReleaseSummary{Deployment: deployment}, } for _, name := range []string{"app_overview", "app_releases"} { var out bytes.Buffer if err := templates.ExecuteTemplate(&out, name, p); err != nil { t.Fatal(err) } body := out.String() if !strings.Contains(body, "

—

") || strings.Contains(body, approvedStatusCopy.NoInstances) || strings.Contains(body, approvedStatusCopy.NoVersion) { t.Errorf("%s rendered the wrong non-reportable state", name) } } }