Monorepo for Tangled
at dfa97820adb447ec0eb48fcd462f76693da9e1e5 112 lines 2.4 kB view raw
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}