@@ -5102,6 +5102,99 @@ void main() {
51025102 expect (updatedMessage? .reminder, isNull);
51035103 });
51045104 });
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+ });
51055198 });
51065199
51075200 group ('ChannelCapabilityCheck' , () {
0 commit comments