summaryrefslogtreecommitdiff
path: root/vrsite/app_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vrsite/app_test.go')
-rw-r--r--vrsite/app_test.go54
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")