// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import assert from 'assert'; import {Server, WebSocket as MockWebSocket} from 'mock-socket'; import * as Actions from '@actions/websocket'; import {Client4} from '@client/rest'; import {WebsocketEvents} from '@constants'; import TestHelper from '@test/test_helper'; import configureStore from '@test/test_store'; global.WebSocket = MockWebSocket; describe('Websocket Reaction Events', () => { let store; let mockServer; beforeAll(async () => { store = await configureStore(); await TestHelper.initBasic(Client4); const connUrl = (Client4.getUrl() + '/api/v4/websocket').replace(/^http:/, 'ws:'); mockServer = new Server(connUrl); return store.dispatch(Actions.init({websocketUrl: Client4.getUrl().replace(/^http:/, 'ws:')})); }); afterAll(async () => { Actions.close()(); mockServer.stop(); await TestHelper.tearDown(); }); it('Websocket Handle Reaction Added to Post', async () => { const emoji = '+1'; const post = {id: 'w7yo9377zbfi9mgiq5gbfpn3ha'}; mockServer.emit('message', JSON.stringify({event: WebsocketEvents.REACTION_ADDED, data: {reaction: `{"user_id":"${TestHelper.basicUser.id}","post_id":"w7yo9377zbfi9mgiq5gbfpn3ha","emoji_name":"${emoji}","create_at":1508249125852}`}, broadcast: {omit_users: null, user_id: '', channel_id: TestHelper.basicChannel.id, team_id: ''}, seq: 12})); await TestHelper.wait(300); const nextEntities = store.getState().entities; const {reactions} = nextEntities.posts; const reactionsForPost = reactions[post.id]; assert.ok(reactionsForPost.hasOwnProperty(`${TestHelper.basicUser.id}-${emoji}`)); }); it('Websocket handle emoji added', async () => { const created = {id: '1mmgakhhupfgfm8oug6pooc5no'}; mockServer.emit('message', JSON.stringify({event: WebsocketEvents.EMOJI_ADDED, data: {emoji: `{"id":"1mmgakhhupfgfm8oug6pooc5no","create_at":1508263941321,"update_at":1508263941321,"delete_at":0,"creator_id":"t36kso9nwtdhbm8dbkd6g4eeby","name":"${TestHelper.generateId()}"}`}, broadcast: {omit_users: null, user_id: '', channel_id: '', team_id: ''}, seq: 2})); await TestHelper.wait(200); const state = store.getState(); const emojis = state.entities.emojis.customEmoji; assert.ok(emojis); assert.ok(emojis[created.id]); }); });