@@ -5102,6 +5102,99 @@ void main() {
5102
5102
expect (updatedMessage? .reminder, isNull);
5103
5103
});
5104
5104
});
5105
+
5106
+ group ('Channel push preference events' , () {
5107
+ const channelId = 'test-channel-id' ;
5108
+ const channelType = 'test-channel-type' ;
5109
+ late Channel channel;
5110
+
5111
+ setUp (() {
5112
+ final channelState = _generateChannelState (channelId, channelType);
5113
+ channel = Channel .fromState (client, channelState);
5114
+ });
5115
+
5116
+ tearDown (() {
5117
+ channel.dispose ();
5118
+ });
5119
+
5120
+ test ('should handle channel.push_preference.updated event' , () async {
5121
+ // Verify initial state
5122
+ expect (channel.state? .channelState.pushPreferences, isNull);
5123
+
5124
+ // Create channel push preference
5125
+ final channelPushPreference = ChannelPushPreference (
5126
+ chatLevel: ChatLevel .mentions,
5127
+ disabledUntil: DateTime .now ().add (const Duration (hours: 1 )),
5128
+ );
5129
+
5130
+ // Create channel.push_preference.updated event
5131
+ final channelPushPreferenceUpdatedEvent = Event (
5132
+ cid: channel.cid,
5133
+ type: EventType .channelPushPreferenceUpdated,
5134
+ channelPushPreference: channelPushPreference,
5135
+ );
5136
+
5137
+ // Dispatch event
5138
+ client.addEvent (channelPushPreferenceUpdatedEvent);
5139
+
5140
+ // Wait for the event to be processed
5141
+ await Future .delayed (Duration .zero);
5142
+
5143
+ // Verify channel push preferences were updated
5144
+ final updatedPreferences = channel.state? .channelState.pushPreferences;
5145
+ expect (updatedPreferences, isNotNull);
5146
+ expect (updatedPreferences? .chatLevel, ChatLevel .mentions);
5147
+ expect (
5148
+ updatedPreferences? .disabledUntil,
5149
+ channelPushPreference.disabledUntil,
5150
+ );
5151
+ });
5152
+
5153
+ test ('should update existing channel push preferences' , () async {
5154
+ // Set initial push preferences
5155
+ const initialPushPreference = ChannelPushPreference (
5156
+ chatLevel: ChatLevel .all,
5157
+ );
5158
+
5159
+ channel.state? .updateChannelState (
5160
+ channel.state! .channelState.copyWith (
5161
+ pushPreferences: initialPushPreference,
5162
+ ),
5163
+ );
5164
+
5165
+ // Verify initial state
5166
+ final pushPreferences = channel.state? .channelState.pushPreferences;
5167
+ expect (pushPreferences? .chatLevel, ChatLevel .all);
5168
+ expect (pushPreferences? .disabledUntil, isNull);
5169
+
5170
+ // Create updated channel push preference
5171
+ final updatedPushPreference = ChannelPushPreference (
5172
+ chatLevel: ChatLevel .none,
5173
+ disabledUntil: DateTime .now ().add (const Duration (hours: 2 )),
5174
+ );
5175
+
5176
+ // Create channel.push_preference.updated event
5177
+ final channelPushPreferenceUpdatedEvent = Event (
5178
+ cid: channel.cid,
5179
+ type: EventType .channelPushPreferenceUpdated,
5180
+ channelPushPreference: updatedPushPreference,
5181
+ );
5182
+
5183
+ // Dispatch event
5184
+ client.addEvent (channelPushPreferenceUpdatedEvent);
5185
+
5186
+ // Wait for the event to be processed
5187
+ await Future .delayed (Duration .zero);
5188
+
5189
+ // Verify channel push preferences were updated
5190
+ final updatedPreferences = channel.state? .channelState.pushPreferences;
5191
+ expect (updatedPreferences? .chatLevel, ChatLevel .none);
5192
+ expect (
5193
+ updatedPreferences? .disabledUntil,
5194
+ updatedPushPreference.disabledUntil,
5195
+ );
5196
+ });
5197
+ });
5105
5198
});
5106
5199
5107
5200
group ('ChannelCapabilityCheck' , () {
0 commit comments