aboutsummaryrefslogtreecommitdiff
path: root/internal/web/server_test.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 12:48:05 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 12:48:05 +0200
commit55a5c793d04b55892fcddfc753d8526bd5748f03 (patch)
treeb045946a62a0b849b5c77a4100294d935ab741dd /internal/web/server_test.go
parented34fd574b4fc2e0a52c655ececddd1be29b271e (diff)
downloadlectio-55a5c793d04b55892fcddfc753d8526bd5748f03.tar.gz
lectio-55a5c793d04b55892fcddfc753d8526bd5748f03.zip
web reader: /reader book picker + chapter nav + version compare, reusing pane templates; v0.9.0
Diffstat (limited to 'internal/web/server_test.go')
-rw-r--r--internal/web/server_test.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/internal/web/server_test.go b/internal/web/server_test.go
index 809ee59..3bb5ea7 100644
--- a/internal/web/server_test.go
+++ b/internal/web/server_test.go
@@ -232,6 +232,57 @@ func TestServer(t *testing.T) {
})
}
+func TestReaderDefault(t *testing.T) {
+ srv := NewServer(config.Default())
+ rec := httptest.NewRecorder()
+ srv.ServeHTTP(rec, httptest.NewRequest("GET", "/reader", nil))
+ if rec.Code != 200 {
+ t.Fatalf("status %d", rec.Code)
+ }
+ body := rec.Body.String()
+ if !strings.Contains(body, `id="reader-root"`) || !strings.Contains(body, `id="pane"`) {
+ t.Errorf("reader page missing root/pane")
+ }
+ if !strings.Contains(body, "Genesis") { // book <option> label (en dialect)
+ t.Errorf("book options missing Genesis")
+ }
+}
+
+func TestReaderPassage(t *testing.T) {
+ srv := NewServer(config.Default())
+ rec := httptest.NewRecorder()
+ srv.ServeHTTP(rec, httptest.NewRequest("GET", "/reader?book=John&chap=3&v=wuj", nil))
+ if rec.Code != 200 {
+ t.Fatalf("status %d", rec.Code)
+ }
+ if b := rec.Body.String(); !strings.Contains(b, "John 3") || !strings.Contains(b, "3:16") {
+ t.Errorf("passage missing heading/verse")
+ }
+}
+
+func TestReaderCompareAndBTFilter(t *testing.T) {
+ srv := NewServer(config.Default())
+ rec := httptest.NewRecorder()
+ // bt must be dropped (no corpus); wuj+vul compared side by side.
+ srv.ServeHTTP(rec, httptest.NewRequest("GET", "/reader?book=John&chap=3&v=bt&v=wuj&v=vul&display=vertical", nil))
+ if rec.Code != 200 {
+ t.Fatalf("status %d", rec.Code)
+ }
+ b := rec.Body.String()
+ if !strings.Contains(b, "display-vertical") {
+ t.Errorf("vertical compare layout missing")
+ }
+}
+
+func TestReaderInvalidBook(t *testing.T) {
+ srv := NewServer(config.Default())
+ rec := httptest.NewRecorder()
+ srv.ServeHTTP(rec, httptest.NewRequest("GET", "/reader?book=Nonsense", nil))
+ if rec.Code != 200 { // defaults to the first book, never 500
+ t.Errorf("invalid book status %d want 200", rec.Code)
+ }
+}
+
// TestRenderOrErrorNoSectionsLang checks the "no readings at all for this
// day" fragment (finding ยง1) follows lang instead of always being Polish.
func TestRenderOrErrorNoSectionsLang(t *testing.T) {