Skip to content

Commit 50cd251

Browse files
committed
test markfresh_chat()
the tests were initially generated by AI and then reworked.
1 parent ba00251 commit 50cd251

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/chat/chat_tests.rs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1331,6 +1331,54 @@ async fn test_marknoticed_all_chats() -> Result<()> {
13311331
Ok(())
13321332
}
13331333

1334+
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
1335+
async fn test_markfresh_chat() -> Result<()> {
1336+
let mut tcm = TestContextManager::new();
1337+
let alice = &tcm.alice().await;
1338+
let bob = &tcm.bob().await;
1339+
1340+
// alice sends a message to Bob
1341+
let alice_chat = alice.create_chat(bob).await;
1342+
let sent_msg1 = alice.send_text(alice_chat.id, "hi bob!").await;
1343+
1344+
// bob received the message, fresh count is 1
1345+
let bob_msg1 = bob.recv_msg(&sent_msg1).await;
1346+
let bob_chat_id = bob_msg1.chat_id;
1347+
bob_chat_id.accept(bob).await?;
1348+
assert_eq!(bob_msg1.state, MessageState::InFresh);
1349+
assert_eq!(bob_chat_id.get_fresh_msg_cnt(bob).await?, 1);
1350+
assert_eq!(bob.get_fresh_msgs().await?.len(), 1);
1351+
1352+
// alice sends another message to bob, fresh count is 2
1353+
let sent_msg2 = alice.send_text(alice_chat.id, "howdy?").await;
1354+
let bob_msg2 = bob.recv_msg(&sent_msg2).await;
1355+
let bob_msg1 = Message::load_from_db(bob, bob_msg1.id).await?;
1356+
assert_eq!(bob_msg1.state, MessageState::InFresh);
1357+
assert_eq!(bob_msg2.state, MessageState::InFresh);
1358+
assert_eq!(bob_chat_id.get_fresh_msg_cnt(bob).await?, 2);
1359+
assert_eq!(bob.get_fresh_msgs().await?.len(), 2);
1360+
1361+
// bob marks the chat as noticed, messages are no longer fresh, fresh count is 0
1362+
marknoticed_chat(bob, bob_chat_id).await?;
1363+
let bob_msg1 = Message::load_from_db(bob, bob_msg1.id).await?;
1364+
let bob_msg2 = Message::load_from_db(bob, bob_msg2.id).await?;
1365+
assert_ne!(bob_msg1.state, MessageState::InFresh);
1366+
assert_ne!(bob_msg2.state, MessageState::InFresh);
1367+
assert_eq!(bob_chat_id.get_fresh_msg_cnt(bob).await?, 0);
1368+
assert_eq!(bob.get_fresh_msgs().await?.len(), 0);
1369+
1370+
// bob marks the chat as fresh again, fresh count is 1 again
1371+
markfresh_chat(bob, bob_chat_id).await?;
1372+
let bob_msg1 = Message::load_from_db(bob, bob_msg1.id).await?;
1373+
let bob_msg2 = Message::load_from_db(bob, bob_msg2.id).await?;
1374+
assert_ne!(bob_msg1.state, MessageState::InFresh);
1375+
assert_eq!(bob_msg2.state, MessageState::InFresh);
1376+
assert_eq!(bob_chat_id.get_fresh_msg_cnt(bob).await?, 1);
1377+
assert_eq!(bob.get_fresh_msgs().await?.len(), 1);
1378+
1379+
Ok(())
1380+
}
1381+
13341382
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
13351383
async fn test_archive_fresh_msgs() -> Result<()> {
13361384
let t = TestContext::new_alice().await;

0 commit comments

Comments
 (0)