@@ -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,50 @@ 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
+
1124
+ let server = MatrixMockServer :: new ( ) . await ;
1125
+ let client = server. client_builder ( ) . build ( ) . await ;
1126
+ let weak_client = WeakClient :: from_client ( & client) ;
1127
+
1128
+ // Create the room.
1129
+ client. base_client ( ) . get_or_create_room ( room_id, RoomState :: Joined ) ;
1130
+ let weak_room = WeakRoom :: new ( weak_client, room_id. to_owned ( ) ) ;
1131
+
1132
+ // Get a `RoomEventCache`.
1133
+ let event_cache = client. event_cache ( ) ;
1134
+ event_cache. subscribe ( ) . unwrap ( ) ;
1135
+
1136
+ let ( room_event_cache, _) = event_cache. for_room ( room_id) . await . unwrap ( ) ;
1137
+
1138
+ let mut latest_event = LatestEvent :: new ( room_id, None , & room_event_cache, & weak_room) . await ;
1139
+
1140
+ // First off, check the default value is `None`!
1141
+ assert_matches ! ( latest_event. current_value. get( ) . await , LatestEventValue :: None ) ;
1142
+
1143
+ // Second, set a new value.
1144
+ latest_event
1145
+ . update ( LatestEventValue :: LocalIsSending ( LatestEventKind :: RoomMessage (
1146
+ RoomMessageEventContent :: text_plain ( "foo" ) ,
1147
+ ) ) )
1148
+ . await ;
1149
+
1150
+ assert_matches ! (
1151
+ latest_event. current_value. get( ) . await ,
1152
+ LatestEventValue :: LocalIsSending ( _)
1153
+ ) ;
1154
+
1155
+ // Finally, set a new `None` value. It must be ignored.
1156
+ latest_event. update ( LatestEventValue :: None ) . await ;
1157
+
1158
+ assert_matches ! (
1159
+ latest_event. current_value. get( ) . await ,
1160
+ LatestEventValue :: LocalIsSending ( _)
1161
+ ) ;
1162
+ }
1163
+
1120
1164
#[ async_test]
1121
1165
async fn test_remote_is_scanning_event_backwards_from_event_cache ( ) {
1122
1166
let room_id = room_id ! ( "!r0" ) ;
0 commit comments