package web
import (
"strings"
"testing"
)
// A numbered ticket is known by its number (54c5175f): the list row and
// the page head say #N, and the hex id stays beside it as the address.
// A hex id is never printed behind "#" any more, since #N is a number.
func TestATicketShowsItsNumber(t *testing.T) {
var b strings.Builder
d := pageData{Repo: "q", Ticket: ticketDetail{ID: "abcdef0123456789", Number: 12,
Fields: []ticketField{{Name: "title", Value: "Export answers 400"}}}}
if err := ticketPage.ExecuteTemplate(&b, "content", d); err != nil {
t.Fatal(err)
}
if !strings.Contains(b.String(), `<span class="t-num" data-hook="ticket-number">#12</span> Export answers 400`) {
t.Fatal("FAIL: the page head does not lead with #12")
}
var plain strings.Builder
d.Ticket.Number = 0
if err := ticketPage.ExecuteTemplate(&plain, "content", d); err != nil {
t.Fatal(err)
}
if strings.Contains(plain.String(), `data-hook="ticket-number"`) {
t.Fatal("FAIL: an unnumbered ticket (a mirror's) shows a number")
}
var list strings.Builder
row := ticketRow{ticketSummary: ticketSummary{ID: "abcdef0123456789", Title: "Export answers 400", Number: 12}, Repo: "q", State: "open"}
if err := ticketListPage.ExecuteTemplate(&list, "content", pageData{Repo: "q", Rows: []ticketRow{row}}); err != nil {
t.Fatal(err)
}
if !strings.Contains(list.String(), `data-hook="ticket-number">#12</span> · <code>abcdef01</code>`) {
t.Error("FAIL: the list row does not read #12 · abcdef01")
}
if strings.Contains(list.String(), `<code>#abcdef01`) {
t.Error("FAIL: a list still prints a hex id behind #")
}
t.Log("ok: #12 leads the title; no number when there is none; no list prints #<hex>")
}