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