Split into category packages; module github.com/ZacharyZhang-NY/MujicaUI
This commit is contained in:
1822 files changed
+24568
-21314
No files matched your search
@@ -0,0 +1,120 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
|
||||
"github.com/ZacharyZhang-NY/MujicaUI/core"
|
||||
)
|
||||
|
||||
func reviewFiles() []FileChange {
|
||||
return []FileChange{
|
||||
fileChangeSample,
|
||||
{Path: "court/menu.md", Old: "soup\nroast\n", New: "soup\nroast\ntart\n"},
|
||||
{Path: "court/old.md", Old: "gone\n"},
|
||||
}
|
||||
}
|
||||
|
||||
func reviewTester(d *[]FileDecision, files []FileChange, opts MultiFileDiffReviewOptions, changes *int) *ui.Tester {
|
||||
return ui.NewTester(func(c *ui.Context) {
|
||||
core.Use(c, core.Settings{})
|
||||
ui.Column(c).Padding(8).Children(func() {
|
||||
if MultiFileDiffReview(c, d, files, opts).Changed() {
|
||||
*changes++
|
||||
}
|
||||
})
|
||||
}, 760, 520)
|
||||
}
|
||||
|
||||
func TestMultiFileDiffReviewPerFileAndAll(t *testing.T) {
|
||||
files := reviewFiles()
|
||||
d := make([]FileDecision, len(files))
|
||||
changes := 0
|
||||
tt := reviewTester(&d, files, MultiFileDiffReviewOptions{}, &changes)
|
||||
if !tt.HasText("0 of 3 files reviewed") || !tt.HasText("Guests: 42") {
|
||||
t.Fatalf("texts %q", tt.Texts())
|
||||
}
|
||||
_ = tt.Click("court/menu.md")
|
||||
if !tt.HasText("tart") || tt.HasText("Guests: 42") {
|
||||
t.Fatal("choosing a file did not show its diff")
|
||||
}
|
||||
_ = tt.Click("Reject")
|
||||
if d[1] != FileRejected || changes != 1 || !tt.HasText("1 of 3 files reviewed") {
|
||||
t.Fatalf("reject: %v", d)
|
||||
}
|
||||
_ = tt.Click("Accept all")
|
||||
if d[0] != FileAccepted || d[1] != FileRejected || d[2] != FileAccepted || !tt.HasText("3 of 3 files reviewed") {
|
||||
t.Fatalf("accept all: %v", d)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMultiFileDiffReviewKeyboard(t *testing.T) {
|
||||
files := reviewFiles()
|
||||
d := make([]FileDecision, len(files))
|
||||
n := 0
|
||||
tt := reviewTester(&d, files, MultiFileDiffReviewOptions{}, &n)
|
||||
_ = tt.Click("court/ledger.md")
|
||||
tt.Key(0, ui.KeyDown)
|
||||
tt.Key(0, ui.KeyDown)
|
||||
tt.Key(0, ui.KeyEnter)
|
||||
if !tt.HasText("gone") || tt.HasText("Guests: 42") {
|
||||
t.Fatalf("keyboard choice: %q", tt.Texts())
|
||||
}
|
||||
}
|
||||
|
||||
func TestMultiFileDiffReviewDisabledAndEmpty(t *testing.T) {
|
||||
files := reviewFiles()
|
||||
d := make([]FileDecision, len(files))
|
||||
n := 0
|
||||
tt := reviewTester(&d, files, MultiFileDiffReviewOptions{Disabled: true}, &n)
|
||||
_ = tt.Click("Accept all")
|
||||
_ = tt.Click("Accept")
|
||||
_ = tt.Click("court/menu.md")
|
||||
if n != 0 || d[0] != FilePending || tt.HasText("tart") {
|
||||
t.Fatalf("disabled review acted: %v", d)
|
||||
}
|
||||
var none []FileDecision
|
||||
tt = reviewTester(&none, nil, MultiFileDiffReviewOptions{}, &n)
|
||||
if !tt.HasText("No changes to review") {
|
||||
t.Fatalf("empty: %q", tt.Texts())
|
||||
}
|
||||
}
|
||||
|
||||
func TestMultiFileDiffReviewManyFilesVirtualized(t *testing.T) {
|
||||
files := make([]FileChange, 100000)
|
||||
for i := range files {
|
||||
files[i] = FileChange{Path: fmt.Sprintf("f%06d.txt", i), Old: "a\n", New: "b\n"}
|
||||
}
|
||||
d := make([]FileDecision, len(files))
|
||||
n := 0
|
||||
tt := reviewTester(&d, files, MultiFileDiffReviewOptions{}, &n)
|
||||
if got := len(tt.Texts()); got > 400 {
|
||||
t.Fatalf("%d texts built for 100000 files", got)
|
||||
}
|
||||
if !tt.HasText("f000000.txt") {
|
||||
t.Fatal("first file missing")
|
||||
}
|
||||
}
|
||||
|
||||
func TestMultiFileDiffReviewNeedsMatchingDecisions(t *testing.T) {
|
||||
defer func() {
|
||||
if recover() == nil {
|
||||
t.Fatal("no panic")
|
||||
}
|
||||
}()
|
||||
d := []FileDecision{}
|
||||
n := 0
|
||||
reviewTester(&d, reviewFiles(), MultiFileDiffReviewOptions{}, &n)
|
||||
}
|
||||
|
||||
func TestMultiFileDiffReviewSnapshot(t *testing.T) {
|
||||
snapshot(t, "multi_file_diff_review", 760, 420, func(c *ui.Context) {
|
||||
files := reviewFiles()
|
||||
d := []FileDecision{FilePending, FileAccepted, FileRejected}
|
||||
ui.Column(c).Padding(12).Children(func() {
|
||||
MultiFileDiffReview(c, &d, files, MultiFileDiffReviewOptions{Height: 390})
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user