diff options
Diffstat (limited to 'internal/web/server_test.go')
| -rw-r--r-- | internal/web/server_test.go | 34 |
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") + } +} |
