@@ -13,8 +13,11 @@ import { useChannelsContext } from '../../contexts/channelsContext/ChannelsConte
1313import { getOrCreateChannelApi } from '../../mock-builders/api/getOrCreateChannel' ;
1414import { queryChannelsApi } from '../../mock-builders/api/queryChannels' ;
1515import { useMockedApis } from '../../mock-builders/api/useMockedApis' ;
16+ import dispatchChannelDeletedEvent from '../../mock-builders/event/channelDeleted' ;
17+ import dispatchChannelHiddenEvent from '../../mock-builders/event/channelHidden' ;
1618import dispatchChannelTruncatedEvent from '../../mock-builders/event/channelTruncated' ;
1719import dispatchChannelUpdatedEvent from '../../mock-builders/event/channelUpdated' ;
20+ // import dispatchChannelVisibleEvent from '../../mock-builders/event/channelVisible';
1821import dispatchConnectionChangedEvent from '../../mock-builders/event/connectionChanged' ;
1922import dispatchMemberAddedEvent from '../../mock-builders/event/memberAdded' ;
2023import dispatchMemberRemovedEvent from '../../mock-builders/event/memberRemoved' ;
@@ -441,6 +444,61 @@ export const Generic = () => {
441444 } ) ;
442445 } ) ;
443446
447+ it ( 'should remove the channel from DB if the channel is deleted' , async ( ) => {
448+ useMockedApis ( chatClient , [ queryChannelsApi ( channels ) ] ) ;
449+
450+ renderComponent ( ) ;
451+ act ( ( ) => dispatchConnectionChangedEvent ( chatClient ) ) ;
452+ await waitFor ( ( ) => expect ( screen . getByTestId ( 'channel-list' ) ) . toBeTruthy ( ) ) ;
453+ const removedChannel = channels [ getRandomInt ( 0 , channels . length - 1 ) ] . channel ;
454+ act ( ( ) => dispatchChannelDeletedEvent ( chatClient , removedChannel ) ) ;
455+ await waitFor ( async ( ) => {
456+ const channelIdsOnUI = screen
457+ . queryAllByLabelText ( 'list-item' )
458+ . map ( ( node ) => node . _fiber . pendingProps . testID ) ;
459+ expect ( channelIdsOnUI . includes ( removedChannel . cid ) ) . toBeFalsy ( ) ;
460+ await expectCIDsOnUIToBeInDB ( screen . queryAllByLabelText ) ;
461+
462+ const channelsRows = await BetterSqlite . selectFromTable ( 'channels' ) ;
463+ const matchingRows = channelsRows . filter ( ( c ) => c . id === removedChannel . id ) ;
464+
465+ const messagesRows = await BetterSqlite . selectFromTable ( 'messages' ) ;
466+ const matchingMessagesRows = messagesRows . filter ( ( m ) => m . cid === removedChannel . cid ) ;
467+
468+ expect ( matchingRows . length ) . toBe ( 0 ) ;
469+ expect ( matchingMessagesRows . length ) . toBe ( 0 ) ;
470+ } ) ;
471+ } ) ;
472+
473+ it ( 'should correctly mark the channel as hidden in the db' , async ( ) => {
474+ useMockedApis ( chatClient , [ queryChannelsApi ( channels ) ] ) ;
475+
476+ renderComponent ( ) ;
477+ act ( ( ) => dispatchConnectionChangedEvent ( chatClient ) ) ;
478+ await waitFor ( ( ) => expect ( screen . getByTestId ( 'channel-list' ) ) . toBeTruthy ( ) ) ;
479+ const hiddenChannel = channels [ getRandomInt ( 0 , channels . length - 1 ) ] . channel ;
480+ act ( ( ) => dispatchChannelHiddenEvent ( chatClient , hiddenChannel ) ) ;
481+ await waitFor ( async ( ) => {
482+ const channelIdsOnUI = screen
483+ . queryAllByLabelText ( 'list-item' )
484+ . map ( ( node ) => node . _fiber . pendingProps . testID ) ;
485+ expect ( channelIdsOnUI . includes ( hiddenChannel . cid ) ) . toBeFalsy ( ) ;
486+ await expectCIDsOnUIToBeInDB ( screen . queryAllByLabelText ) ;
487+
488+ const channelsRows = await BetterSqlite . selectFromTable ( 'channels' ) ;
489+ const matchingRows = channelsRows . filter ( ( c ) => c . id === hiddenChannel . id ) ;
490+
491+ const messagesRows = await BetterSqlite . selectFromTable ( 'messages' ) ;
492+ const matchingMessagesRows = messagesRows . filter ( ( m ) => m . cid === hiddenChannel . cid ) ;
493+
494+ expect ( matchingRows . length ) . toBe ( 1 ) ;
495+ expect ( matchingRows [ 0 ] . hidden ) . toBeTruthy ( ) ;
496+ expect ( matchingMessagesRows . length ) . toBe (
497+ chatClient . activeChannels [ hiddenChannel . cid ] . state . messages . length ,
498+ ) ;
499+ } ) ;
500+ } ) ;
501+
444502 it ( 'should add the channel to DB when user is added as member' , async ( ) => {
445503 useMockedApis ( chatClient , [ queryChannelsApi ( channels ) ] ) ;
446504
0 commit comments