Commit graph

11 commits

Author SHA1 Message Date
a3932aef1e fix: handle ValueError from parse_occurrence and add edge-case occurrence tests
- Wrap parse_occurrence() call in try/except ValueError; return skipped with reason instead of crashing
- Remove redundant `or {}` guard on sub_row (already defaulted to {} via next(..., {}))
- Strengthen test_occurrence_passes assertion to check status == "success"
- Add 3 edge-case tests: occurrence="every", missing occurrence key, invalid occurrence string
2026-04-27 12:57:44 -07:00
08aa019439 feat: add occurrence check to poster before strategy dispatch
Parse the occurrence field from sub_row and skip execution when today
is not the nth weekday specified (e.g. first_sunday). Check runs after
sub_row fetch but before dupe guard. Two new tests confirm skip and
pass paths using patched date.today in app.services.poster.
2026-04-27 12:27:16 -07:00
90d30167f8 fix: add timeout and error wrapping to _find_sticky, clean up test fixture 2026-04-27 12:23:44 -07:00
e37be0935d feat: implement RedditCommentStrategy and register in platform registry
Adds RedditCommentStrategy to app/services/platforms/reddit_comment.py,
resolving thread_id via thread_url_override or _find_sticky title search,
falling back to reconstructed URL when client.comment() returns empty string.
Registers the strategy under "reddit_comment" in the platform _REGISTRY.
7 new tests confirm all execution paths: url override, title pattern lookup,
not-found error, missing-extra error, empty-URL reconstruction, dupe guard,
and registry presence. Full suite: 34/34 passing.
2026-04-27 12:00:08 -07:00
719a1d5aca fix: address code review issues in reddit_comment thread detection helpers 2026-04-27 11:55:55 -07:00
9d955b2c50 feat: add thread detection helpers to reddit_comment strategy 2026-04-27 11:36:36 -07:00
ca9b2ac0b2 feat: add is_nth_weekday() and parse_occurrence() for scheduled comment gating 2026-04-27 11:04:30 -07:00
81a63ab0ec refactor: dispatch poster by campaign.type via platform strategy registry
Replace hardcoded platform dispatch with get_client(campaign["type"]) so
any future campaign type (blog_post, email, etc.) routes automatically
through the strategy registry. Adds dupe-guard opt-out per strategy,
sub_row pre-fetch for extra metadata, and 5 new TDD tests (14 total).
2026-04-27 08:38:12 -07:00
de6dc645f6 feat: add platform registry with get_client() dispatch 2026-04-27 08:12:47 -07:00
ae96621f6c feat: add RedditPostStrategy wrapping RedditClient.post() 2026-04-27 08:09:03 -07:00
2dd88285a2 feat: add PostingStrategy ABC and PostResult dataclass 2026-04-27 08:00:36 -07:00