forked from
tangled.org/core
Monorepo for Tangled
1package types
2
3import "testing"
4
5func TestDiffId(t *testing.T) {
6 tests := []struct {
7 name string
8 diff Diff
9 expected string
10 }{
11 {
12 name: "regular file uses new name",
13 diff: Diff{
14 Name: struct {
15 Old string `json:"old"`
16 New string `json:"new"`
17 }{Old: "", New: "src/main.go"},
18 },
19 expected: "src/main.go",
20 },
21 {
22 name: "new file uses new name",
23 diff: Diff{
24 Name: struct {
25 Old string `json:"old"`
26 New string `json:"new"`
27 }{Old: "", New: "src/new.go"},
28 IsNew: true,
29 },
30 expected: "src/new.go",
31 },
32 {
33 name: "deleted file uses old name",
34 diff: Diff{
35 Name: struct {
36 Old string `json:"old"`
37 New string `json:"new"`
38 }{Old: "src/deleted.go", New: ""},
39 IsDelete: true,
40 },
41 expected: "src/deleted.go",
42 },
43 {
44 name: "renamed file uses new name",
45 diff: Diff{
46 Name: struct {
47 Old string `json:"old"`
48 New string `json:"new"`
49 }{Old: "src/old.go", New: "src/renamed.go"},
50 IsRename: true,
51 },
52 expected: "src/renamed.go",
53 },
54 }
55
56 for _, tt := range tests {
57 t.Run(tt.name, func(t *testing.T) {
58 if got := tt.diff.Id(); got != tt.expected {
59 t.Errorf("Diff.Id() = %q, want %q", got, tt.expected)
60 }
61 })
62 }
63}
64
65func TestChangedFilesMatchesDiffId(t *testing.T) {
66 // ChangedFiles() must return values matching each Diff's Id()
67 // so that sidebar links point to the correct anchors.
68 // Tests existing, deleted, new, and renamed files.
69 nd := NiceDiff{
70 Diff: []Diff{
71 {
72 Name: struct {
73 Old string `json:"old"`
74 New string `json:"new"`
75 }{Old: "", New: "src/modified.go"},
76 },
77 {
78 Name: struct {
79 Old string `json:"old"`
80 New string `json:"new"`
81 }{Old: "src/deleted.go", New: ""},
82 IsDelete: true,
83 },
84 {
85 Name: struct {
86 Old string `json:"old"`
87 New string `json:"new"`
88 }{Old: "", New: "src/new.go"},
89 IsNew: true,
90 },
91 {
92 Name: struct {
93 Old string `json:"old"`
94 New string `json:"new"`
95 }{Old: "src/old.go", New: "src/renamed.go"},
96 IsRename: true,
97 },
98 },
99 }
100
101 changedFiles := nd.ChangedFiles()
102
103 if len(changedFiles) != len(nd.Diff) {
104 t.Fatalf("ChangedFiles() returned %d items, want %d", len(changedFiles), len(nd.Diff))
105 }
106
107 for i, diff := range nd.Diff {
108 if changedFiles[i] != diff.Id() {
109 t.Errorf("ChangedFiles()[%d] = %q, but Diff.Id() = %q", i, changedFiles[i], diff.Id())
110 }
111 }
112}