Skip to content
quarry Artifact [54b043effa]
Login

Artifact [54b043effa]

Artifact 54b043effaeeff5eec699cb0b6dc381b8e77c0527621def1d33ba5d687f1b3a6:


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