forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import {describe, it} from '@jest/globals'
2
3describe(`#/state/messages/convo`, () => {
4 describe(`init`, () => {
5 it.todo(`fails if sender and recipients aren't found`)
6 it.todo(`cannot re-initialize from a non-unintialized state`)
7 it.todo(`can re-initialize from a failed state`)
8 })
9
10 describe(`resume`, () => {
11 it.todo(`restores previous state if resume fails`)
12 })
13
14 describe(`suspend`, () => {
15 it.todo(`cannot be interacted with when suspended`)
16 it.todo(`polling is stopped when suspended`)
17 })
18
19 describe(`read states`, () => {
20 it.todo(`should mark messages as read as they come in`)
21 })
22
23 describe(`history fetching`, () => {
24 it.todo(`fetches initial chat history`)
25 it.todo(`fetches additional chat history`)
26 it.todo(`handles history fetch failure`)
27 it.todo(`does not insert deleted messages`)
28 })
29
30 describe(`sending messages`, () => {
31 it.todo(`optimistically adds sending messages`)
32 it.todo(`sends messages in order`)
33 it.todo(`failed message send fails all sending messages`)
34 it.todo(`can retry all failed messages via retry ConvoItem`)
35 it.todo(
36 `successfully sent messages are re-ordered, if needed, by events received from server`,
37 )
38 it.todo(`pending messages are cleaned up from state after firehose event`)
39 })
40
41 describe(`deleting messages`, () => {
42 it.todo(`messages are optimistically deleted from the chat`)
43 it.todo(`messages are confirmed deleted via events from the server`)
44 it.todo(`deleted messages are cleaned up from state after firehose event`)
45 })
46
47 describe(`log handling`, () => {
48 it.todo(`updates rev to latest message received`)
49 it.todo(`only handles log events for this convoId`)
50 it.todo(`does not insert deleted messages`)
51 })
52
53 describe(`item ordering`, () => {
54 it.todo(`pending items are first, and in order`)
55 it.todo(`new message items are next, and in order`)
56 it.todo(`past message items are next, and in order`)
57 })
58
59 describe(`inactivity`, () => {
60 it.todo(
61 `below a certain threshold of inactivity, restore entirely from log`,
62 )
63 it.todo(
64 `above a certain threshold of inactivity, rehydrate entirely fresh state`,
65 )
66 })
67})