aboutsummaryrefslogtreecommitdiff
path: root/internal/web/server_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/web/server_test.go')
-rw-r--r--internal/web/server_test.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/internal/web/server_test.go b/internal/web/server_test.go
index 61546b8..f6c050b 100644
--- a/internal/web/server_test.go
+++ b/internal/web/server_test.go
@@ -597,3 +597,37 @@ func TestSettingsPostEmptyBooksPreservesFile(t *testing.T) {
t.Errorf("empty books submit clobbered books.toml: got %q", got)
}
}
+
+func TestBookmarksFlow(t *testing.T) {
+ t.Setenv("XDG_DATA_HOME", t.TempDir())
+ srv := NewServer(config.Default())
+
+ // Add via the reader form.
+ form := url.Values{}
+ form.Set("book", "John")
+ form.Set("chap", "3")
+ form.Set("note", "for God so loved")
+ form.Set("tags", "grace, gospel")
+ post := httptest.NewRequest("POST", "/reader/bookmark", strings.NewReader(form.Encode()))
+ post.Header.Set("Content-Type", "application/x-www-form-urlencoded")
+ rec := httptest.NewRecorder()
+ srv.ServeHTTP(rec, post)
+ if rec.Code != http.StatusSeeOther {
+ t.Fatalf("add status %d", rec.Code)
+ }
+
+ // Listed on /bookmarks.
+ list := httptest.NewRecorder()
+ srv.ServeHTTP(list, httptest.NewRequest("GET", "/bookmarks", nil))
+ b := list.Body.String()
+ if !strings.Contains(b, "John") || !strings.Contains(b, "for God so loved") || !strings.Contains(b, `book=John&chap=3`) {
+ t.Errorf("bookmark not listed:\n%s", b)
+ }
+
+ // Tag filter.
+ byTag := httptest.NewRecorder()
+ srv.ServeHTTP(byTag, httptest.NewRequest("GET", "/bookmarks?tag=grace", nil))
+ if !strings.Contains(byTag.Body.String(), "John") {
+ t.Errorf("tag filter dropped the bookmark")
+ }
+}