The repeat rules are pinned by the shared fixture

daily/weekly/monthly/yearly was written out in the server (REMINDER_RECURRENCES),
the core (recur::RECURRENCES), the web editor's <option>s and Android's picker,
with nothing holding them together. grammar.json now has a recurrences list; the
server, core and web suites each check theirs against it, and the web's options
come from notes/recurrence.ts rather than the template. Android's picker pins the
list by hand with its localised labels, as it does the tint: its JVM tests do not
read the fixture.

DRY pass #2, batch 3 (#5372).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 14:28:22 -04:00
co-authored by Claude Opus 5.5
parent db9e9a2dfb
commit 4285026cfe
6 changed files with 39 additions and 4 deletions
+5
View File
@@ -14,6 +14,7 @@ import pytest
from inkwell.notes.checklist import parse_items, render_item
from inkwell.notes.helpers import derive_display_title
from inkwell.notes.recurrence import REMINDER_RECURRENCES
from inkwell.notes.tags import parse_tags, split_body_tags
FIXTURE = json.loads(
@@ -47,3 +48,7 @@ def test_lifts(case):
@pytest.mark.parametrize("case", FIXTURE["display_titles"], ids=lambda c: repr(c["body"][:40]))
def test_display_titles(case):
assert derive_display_title(case["body"]) == case["title"]
def test_recurrences():
assert REMINDER_RECURRENCES == set(FIXTURE["recurrences"])