@@ -384,7 +384,7 @@ async fn shutdowm_after_attached() {
384
384
}
385
385
386
386
#[ tokio:: test]
387
- async fn shutdowm_after_corrupted_frame ( ) {
387
+ async fn shutdown_after_corrupted_frame ( ) {
388
388
let ( events, result) = run_test ( DownlinkOptions :: empty ( ) , |context| async move {
389
389
let TestContext {
390
390
mut tx,
@@ -731,7 +731,7 @@ async fn exhaust_output_buffer() {
731
731
}
732
732
733
733
#[ tokio:: test]
734
- async fn shutdowm_after_timeout_with_no_subscribers ( ) {
734
+ async fn shutdown_after_timeout_with_no_subscribers ( ) {
735
735
let ( ( _stop, events) , result) = run_test_with_config (
736
736
DownlinkOptions :: empty ( ) ,
737
737
DownlinkRuntimeConfig {
@@ -1079,3 +1079,100 @@ async fn receive_from_two_consumers() {
1079
1079
assert_eq ! ( first_events, vec![ DownlinkNotification :: Unlinked ] ) ;
1080
1080
assert_eq ! ( second_events, vec![ DownlinkNotification :: Unlinked ] ) ;
1081
1081
}
1082
+
1083
+ #[ tokio:: test]
1084
+ async fn sync_no_event ( ) {
1085
+ let ( events, result) = run_test (
1086
+ DownlinkOptions :: SYNC ,
1087
+ |TestContext {
1088
+ mut tx,
1089
+ mut rx,
1090
+ start_client,
1091
+ stop,
1092
+ mut events,
1093
+ ..
1094
+ } | async move {
1095
+ expect_message ( rx. recv ( ) . await , Operation :: Link ) ;
1096
+
1097
+ tx. link ( ) . await ;
1098
+
1099
+ start_client. trigger ( ) ;
1100
+
1101
+ expect_event (
1102
+ events. next ( ) . await ,
1103
+ State :: Unlinked ,
1104
+ DownlinkNotification :: Linked ,
1105
+ ) ;
1106
+ expect_message ( rx. recv ( ) . await , Operation :: Sync ) ;
1107
+
1108
+ tx. sync ( ) . await ;
1109
+
1110
+ expect_event (
1111
+ events. next ( ) . await ,
1112
+ State :: Linked ,
1113
+ DownlinkNotification :: Synced ,
1114
+ ) ;
1115
+
1116
+ stop. trigger ( ) ;
1117
+ events. collect :: < Vec < _ > > ( ) . await
1118
+ } ,
1119
+ )
1120
+ . await ;
1121
+ assert ! ( result. is_ok( ) ) ;
1122
+ assert_eq ! (
1123
+ events,
1124
+ vec![ ( State :: Synced , DownlinkNotification :: Unlinked ) ]
1125
+ ) ;
1126
+ }
1127
+
1128
+ #[ tokio:: test]
1129
+ async fn sync_empty_event ( ) {
1130
+ let ( events, result) = run_test (
1131
+ DownlinkOptions :: SYNC ,
1132
+ |TestContext {
1133
+ mut tx,
1134
+ mut rx,
1135
+ start_client,
1136
+ stop,
1137
+ mut events,
1138
+ ..
1139
+ } | async move {
1140
+ expect_message ( rx. recv ( ) . await , Operation :: Link ) ;
1141
+
1142
+ tx. link ( ) . await ;
1143
+
1144
+ start_client. trigger ( ) ;
1145
+
1146
+ expect_event (
1147
+ events. next ( ) . await ,
1148
+ State :: Unlinked ,
1149
+ DownlinkNotification :: Linked ,
1150
+ ) ;
1151
+ expect_message ( rx. recv ( ) . await , Operation :: Sync ) ;
1152
+
1153
+ let content = Message :: CurrentValue ( Text :: new ( "" ) ) ;
1154
+ tx. update ( content. clone ( ) ) . await ;
1155
+ tx. sync ( ) . await ;
1156
+
1157
+ expect_event (
1158
+ events. next ( ) . await ,
1159
+ State :: Linked ,
1160
+ DownlinkNotification :: Event { body : content } ,
1161
+ ) ;
1162
+ expect_event (
1163
+ events. next ( ) . await ,
1164
+ State :: Linked ,
1165
+ DownlinkNotification :: Synced ,
1166
+ ) ;
1167
+
1168
+ stop. trigger ( ) ;
1169
+ events. collect :: < Vec < _ > > ( ) . await
1170
+ } ,
1171
+ )
1172
+ . await ;
1173
+ assert ! ( result. is_ok( ) ) ;
1174
+ assert_eq ! (
1175
+ events,
1176
+ vec![ ( State :: Synced , DownlinkNotification :: Unlinked ) ]
1177
+ ) ;
1178
+ }
0 commit comments