@@ -1106,8 +1106,8 @@ mod tests_latest_event_value_non_wasm {
1106
1106
} ;
1107
1107
1108
1108
use super :: {
1109
- LatestEventKind , LatestEventValue , LatestEventValuesForLocalEvents , RoomEventCache ,
1110
- RoomSendQueueUpdate ,
1109
+ LatestEvent , LatestEventKind , LatestEventValue , LatestEventValuesForLocalEvents ,
1110
+ RoomEventCache , RoomSendQueueUpdate ,
1111
1111
} ;
1112
1112
use crate :: {
1113
1113
client:: WeakClient ,
@@ -1117,6 +1117,51 @@ mod tests_latest_event_value_non_wasm {
1117
1117
Client , Error ,
1118
1118
} ;
1119
1119
1120
+ #[ async_test]
1121
+ async fn test_update_ignores_none_value ( ) {
1122
+ let room_id = room_id ! ( "!r0" ) ;
1123
+ let user_id = user_id ! ( "@mnt_io:matrix.org" ) ;
1124
+
1125
+ let server = MatrixMockServer :: new ( ) . await ;
1126
+ let client = server. client_builder ( ) . build ( ) . await ;
1127
+ let weak_client = WeakClient :: from_client ( & client) ;
1128
+
1129
+ // Create the room.
1130
+ client. base_client ( ) . get_or_create_room ( room_id, RoomState :: Joined ) ;
1131
+ let weak_room = WeakRoom :: new ( weak_client, room_id. to_owned ( ) ) ;
1132
+
1133
+ // Get a `RoomEventCache`.
1134
+ let event_cache = client. event_cache ( ) ;
1135
+ event_cache. subscribe ( ) . unwrap ( ) ;
1136
+
1137
+ let ( room_event_cache, _) = event_cache. for_room ( room_id) . await . unwrap ( ) ;
1138
+
1139
+ let mut latest_event = LatestEvent :: new ( room_id, None , & room_event_cache, & weak_room) . await ;
1140
+
1141
+ // First off, check the default value is `None`!
1142
+ assert_matches ! ( latest_event. current_value. get( ) . await , LatestEventValue :: None ) ;
1143
+
1144
+ // Second, set a new value.
1145
+ latest_event
1146
+ . update ( LatestEventValue :: LocalIsSending ( LatestEventKind :: RoomMessage (
1147
+ RoomMessageEventContent :: text_plain ( "foo" ) ,
1148
+ ) ) )
1149
+ . await ;
1150
+
1151
+ assert_matches ! (
1152
+ latest_event. current_value. get( ) . await ,
1153
+ LatestEventValue :: LocalIsSending ( _)
1154
+ ) ;
1155
+
1156
+ // Finally, set a new `None` value. It must be ignored.
1157
+ latest_event. update ( LatestEventValue :: None ) . await ;
1158
+
1159
+ assert_matches ! (
1160
+ latest_event. current_value. get( ) . await ,
1161
+ LatestEventValue :: LocalIsSending ( _)
1162
+ ) ;
1163
+ }
1164
+
1120
1165
#[ async_test]
1121
1166
async fn test_remote_is_scanning_event_backwards_from_event_cache ( ) {
1122
1167
let room_id = room_id ! ( "!r0" ) ;
0 commit comments