Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
70 lines
1.9 KiB
Plaintext
70 lines
1.9 KiB
Plaintext
; Follow-up — notification feed over an inbox. (feed-test name got expected)
|
|
|
|
; an inbox is a stream of {:to receiver :activity act} events
|
|
(define mk-ev (fn (to act) {:activity act :to to}))
|
|
|
|
(define
|
|
IB
|
|
(feed/stream
|
|
(list
|
|
(mk-ev "alice" (feed/activity "bob" "like" "P" 10 (list)))
|
|
(mk-ev "alice" (feed/activity "carol" "like" "P" 20 (list)))
|
|
(mk-ev "alice" (feed/activity "dave" "reply" "Q" 30 (list)))
|
|
(mk-ev "bob" (feed/activity "eve" "like" "R" 40 (list))))))
|
|
|
|
; ---------- raw notifications ----------
|
|
|
|
(feed-test
|
|
"alice notification count"
|
|
(feed/count (feed/notifications IB "alice"))
|
|
3)
|
|
(feed-test
|
|
"bob notification count"
|
|
(feed/count (feed/notifications IB "bob"))
|
|
1)
|
|
(feed-test
|
|
"zoe no notifications"
|
|
(feed/count (feed/notifications IB "zoe"))
|
|
0)
|
|
|
|
; ---------- verb filtering ----------
|
|
|
|
(feed-test
|
|
"alice likes only"
|
|
(feed/count (feed/notify-verbs IB "alice" (list "like")))
|
|
2)
|
|
(feed-test
|
|
"alice replies only"
|
|
(feed/count (feed/notify-verbs IB "alice" (list "reply")))
|
|
1)
|
|
(feed-test
|
|
"alice like+reply"
|
|
(feed/count (feed/notify-verbs IB "alice" (list "like" "reply")))
|
|
3)
|
|
(feed-test
|
|
"alice follow (none)"
|
|
(feed/count (feed/notify-verbs IB "alice" (list "follow")))
|
|
0)
|
|
|
|
; ---------- digest ----------
|
|
|
|
(define dig (feed/notify-digest IB "alice"))
|
|
|
|
(feed-test "digest group count" (len dig) 2)
|
|
(feed-test
|
|
"digest sorted by key (like|P before reply|Q)"
|
|
(map (fn (g) (get g :object)) dig)
|
|
(list "P" "Q"))
|
|
(feed-test
|
|
"like group actors"
|
|
(get (nth dig 0) :actors)
|
|
(list "bob" "carol"))
|
|
(feed-test "like group count" (get (nth dig 0) :count) 2)
|
|
(feed-test "like group verb" (get (nth dig 0) :verb) "like")
|
|
(feed-test "reply group count" (get (nth dig 1) :count) 1)
|
|
(feed-test
|
|
"reply group actors"
|
|
(get (nth dig 1) :actors)
|
|
(list "dave"))
|
|
(feed-test "empty digest for zoe" (feed/notify-digest IB "zoe") (list))
|