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) } } }