diff options
Diffstat (limited to 'vrsite/app_test.go')
| -rw-r--r-- | vrsite/app_test.go | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/vrsite/app_test.go b/vrsite/app_test.go index 403903a..1ee7209 100644 --- a/vrsite/app_test.go +++ b/vrsite/app_test.go @@ -13,6 +13,8 @@ import ( "strings" "testing" "time" + + "0x4200.cafe/vr/sidecar" ) func logLines(lines ...string) string { return strings.Join(lines, "\n") + "\n" } @@ -369,7 +371,7 @@ func testServer(t *testing.T) (*server, string, string) { t.Fatal(err) } dark, light := loadTheme("", "", "dark"), loadTheme("", "", "light") - sv := newServer(logPath, repo, "test", "tester", dark, light, testThemes(dark, light)) + sv := newServer(newFileLog(logPath), repo, "test", "tester", dark, light, testThemes(dark, light)) return sv, logPath, change } @@ -586,6 +588,54 @@ func TestServerWritesOnlyTheLog(t *testing.T) { } } +func TestServerWritesBrowserNotesToJJSidecar(t *testing.T) { + repo, change := testRepo(t) + t.Setenv("HOME", repo) + t.Setenv("JJ_USER", "test") + t.Setenv("JJ_EMAIL", "[email protected]") + _, commit, err := resolveRevision(repo, change) + if err != nil { + t.Fatal(err) + } + log, err := sidecar.Open(repo) + if err != nil { + t.Fatal(err) + } + dark, light := loadTheme("", "", "dark"), loadTheme("", "", "light") + sv := newServer(log, repo, "test", "tester", dark, light, testThemes(dark, light)) + before, err := jjRun(repo, "status") + if err != nil { + t.Fatal(err) + } + form := url.Values{"text": {"sidecar browser note"}, "file": {"hello.txt"}, "change": {change}} + r := httptest.NewRequest("POST", "/notes", strings.NewReader(form.Encode())) + r.Header.Set("Content-Type", "application/x-www-form-urlencoded") + w := httptest.NewRecorder() + sv.handler().ServeHTTP(w, r) + if w.Code != http.StatusSeeOther { + t.Fatalf("POST /notes = %d: %s", w.Code, w.Body) + } + after, err := jjRun(repo, "status") + if err != nil { + t.Fatal(err) + } + if string(after) != string(before) { + t.Fatalf("project working copy changed:\n--- before\n%s--- after\n%s", before, after) + } + if _, err := os.Stat(filepath.Join(repo, sidecar.LogFile)); !os.IsNotExist(err) { + t.Fatalf("sidecar materialized in project working copy: %v", err) + } + b, err := log.Read() + if err != nil { + t.Fatal(err) + } + entries := parseLog(b) + last := entries[len(entries)-1] + if last.Text != "sidecar browser note" || last.Commit != commit || len(last.Commit) != 40 { + t.Fatalf("sidecar note = %+v", last) + } +} + var agoRe = regexp.MustCompile(`\d+[smhd] ago|just now`) func TestServerHoldsNoStateOfItsOwn(t *testing.T) { @@ -598,7 +648,7 @@ func TestServerHoldsNoStateOfItsOwn(t *testing.T) { h.ServeHTTP(httptest.NewRecorder(), r) // a second server that has only ever seen the log file - fresh := newServer(logPath, sv.repo, "test", "tester", sv.theme, sv.light, sv.themes).handler() + fresh := newServer(newFileLog(logPath), sv.repo, "test", "tester", sv.theme, sv.light, sv.themes).handler() for _, path := range []string{"/", "/notes", "/notes?scope=all", "/code/hello.txt", "/files", "/tree", "/change/" + change} { was := agoRe.ReplaceAllString(get(t, h, path, false).Body.String(), "AGO") |
