@@ -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 ) ]
13351383async fn test_archive_fresh_msgs ( ) -> Result < ( ) > {
13361384 let t = TestContext :: new_alice ( ) . await ;
0 commit comments