Skip to content
quarry Artifact [b2a7b4d8d2]
Login

Artifact [b2a7b4d8d2]

Artifact b2a7b4d8d2b8c34e2e99cf7d03bd3b410c3729f73ff07740f69916afc7a6ba5c:


package web

import (
	"encoding/json"
	"strings"
	"testing"
)

// A large check-in (checkin.diff's large mode) draws its files, each
// with its counts and a link to its own diff, and no hunks.
func TestALargeCheckinPageListsItsFiles(t *testing.T) {
	var dd diffDetail
	if err := json.Unmarshal([]byte(`{"from":"aa","to":"bbbb","large":true,"totalLines":40001,
		"files":[{"status":"M","name":"src/z.go"},{"status":"A","name":"gen/a b.json"}],
		"counts":{"src/z.go":{"Added":1,"Removed":2},"gen/a b.json":{"Added":39998,"Removed":0}}}`), &dd); err != nil {
		t.Fatal(err)
	}
	dd.Repo = "alpha"
	var buf strings.Builder
	if err := noHooks.template(diffPage).ExecuteTemplate(&buf, "diff-body", pageData{Repo: "alpha", Diff: dd}); err != nil {
		t.Fatal(err)
	}
	got := buf.String()
	if !strings.Contains(got, `data-hook="diff-large" data-files="2"`) || strings.Count(got, `data-hook="diff-large-file"`) != 2 {
		t.Fatalf("FAIL: the large diff does not list its two files: %s", got)
	}
	if !strings.Contains(got, `href="/r/alpha/checkin/bbbb/diff?file=gen%2Fa%20b.json"`) || !strings.Contains(got, "+39998") {
		t.Errorf("FAIL: a file lacks its own diff link or its counts: %s", got)
	}
	if i, j := strings.Index(got, "gen/a b.json"), strings.Index(got, "src/z.go"); i < 0 || j < 0 || i > j {
		t.Error("FAIL: the files are not in path order")
	}
}