Add more message reducer tests
This commit is contained in:
parent
c598ace18c
commit
a4d40bef39
@ -1,9 +1,91 @@
|
|||||||
import { Map } from 'immutable';
|
import { Map, fromJS } from 'immutable';
|
||||||
import reducer from '../reducers/messages';
|
import reducer from '../reducers/messages';
|
||||||
import * as actions from '../actions';
|
import * as actions from '../actions';
|
||||||
import { broadcast } from '../actions/message';
|
import { broadcast } from '../actions/message';
|
||||||
|
|
||||||
describe('reducers/messages', () => {
|
describe('reducers/messages', () => {
|
||||||
|
it('adds the message on ADD_MESSAGE', () => {
|
||||||
|
const state = reducer(undefined, {
|
||||||
|
type: actions.ADD_MESSAGE,
|
||||||
|
server: 'srv',
|
||||||
|
tab: '#chan1',
|
||||||
|
message: {
|
||||||
|
from: 'foo',
|
||||||
|
content: 'msg'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toMatchObject({
|
||||||
|
srv: {
|
||||||
|
'#chan1': [{
|
||||||
|
from: 'foo',
|
||||||
|
content: 'msg'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('adds all the messsages on ADD_MESSAGES', () => {
|
||||||
|
const state = reducer(undefined, {
|
||||||
|
type: actions.ADD_MESSAGES,
|
||||||
|
server: 'srv',
|
||||||
|
tab: '#chan1',
|
||||||
|
messages: [
|
||||||
|
{
|
||||||
|
from: 'foo',
|
||||||
|
content: 'msg'
|
||||||
|
}, {
|
||||||
|
from: 'bar',
|
||||||
|
content: 'msg'
|
||||||
|
}, {
|
||||||
|
tab: '#chan2',
|
||||||
|
from: 'foo',
|
||||||
|
content: 'msg'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toMatchObject({
|
||||||
|
srv: {
|
||||||
|
'#chan1': [
|
||||||
|
{
|
||||||
|
from: 'foo',
|
||||||
|
content: 'msg'
|
||||||
|
}, {
|
||||||
|
from: 'bar',
|
||||||
|
content: 'msg'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'#chan2': [{
|
||||||
|
from: 'foo',
|
||||||
|
content: 'msg'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles prepending of messages on ADD_MESSAGES', () => {
|
||||||
|
let state = fromJS({
|
||||||
|
srv: {
|
||||||
|
'#chan1': [{ id: 0 }]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
state = reducer(state, {
|
||||||
|
type: actions.ADD_MESSAGES,
|
||||||
|
server: 'srv',
|
||||||
|
tab: '#chan1',
|
||||||
|
prepend: true,
|
||||||
|
messages: [{ id: 1 }, { id: 2 }]
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toMatchObject({
|
||||||
|
srv: {
|
||||||
|
'#chan1': [{ id: 1 }, { id: 2 }, { id: 0 }]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('adds messages to the correct tabs when broadcasting', () => {
|
it('adds messages to the correct tabs when broadcasting', () => {
|
||||||
let state = {
|
let state = {
|
||||||
environment: Map({
|
environment: Map({
|
||||||
@ -26,4 +108,74 @@ describe('reducers/messages', () => {
|
|||||||
expect(messages.srv['#chan3']).toHaveLength(1);
|
expect(messages.srv['#chan3']).toHaveLength(1);
|
||||||
expect(messages.srv['#chan3'][0].content).toBe('test');
|
expect(messages.srv['#chan3'][0].content).toBe('test');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('deletes all messages related to server when disconnecting', () => {
|
||||||
|
let state = fromJS({
|
||||||
|
srv: {
|
||||||
|
'#chan1': [
|
||||||
|
{ content: 'msg1' },
|
||||||
|
{ content: 'msg2' }
|
||||||
|
],
|
||||||
|
'#chan2': [
|
||||||
|
{ content: 'msg' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
srv2: {
|
||||||
|
'#chan1': [
|
||||||
|
{ content: 'msg' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
state = reducer(state, {
|
||||||
|
type: actions.DISCONNECT,
|
||||||
|
server: 'srv'
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
srv2: {
|
||||||
|
'#chan1': [
|
||||||
|
{ content: 'msg' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('deletes all messages related to channel when parting', () => {
|
||||||
|
let state = fromJS({
|
||||||
|
srv: {
|
||||||
|
'#chan1': [
|
||||||
|
{ content: 'msg1' },
|
||||||
|
{ content: 'msg2' }
|
||||||
|
],
|
||||||
|
'#chan2': [
|
||||||
|
{ content: 'msg' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
srv2: {
|
||||||
|
'#chan1': [
|
||||||
|
{ content: 'msg' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
state = reducer(state, {
|
||||||
|
type: actions.PART,
|
||||||
|
server: 'srv',
|
||||||
|
channels: ['#chan1']
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
srv: {
|
||||||
|
'#chan2': [
|
||||||
|
{ content: 'msg' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
srv2: {
|
||||||
|
'#chan1': [
|
||||||
|
{ content: 'msg' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -19,7 +19,6 @@ export const PART = 'PART';
|
|||||||
export const RAW = 'RAW';
|
export const RAW = 'RAW';
|
||||||
export const SEARCH_MESSAGES = 'SEARCH_MESSAGES';
|
export const SEARCH_MESSAGES = 'SEARCH_MESSAGES';
|
||||||
export const SELECT_TAB = 'SELECT_TAB';
|
export const SELECT_TAB = 'SELECT_TAB';
|
||||||
export const SEND_MESSAGE = 'SEND_MESSAGE';
|
|
||||||
export const SET_CERT = 'SET_CERT';
|
export const SET_CERT = 'SET_CERT';
|
||||||
export const SET_CERT_ERROR = 'SET_CERT_ERROR';
|
export const SET_CERT_ERROR = 'SET_CERT_ERROR';
|
||||||
export const SET_ENVIRONMENT = 'SET_ENVIRONMENT';
|
export const SET_ENVIRONMENT = 'SET_ENVIRONMENT';
|
||||||
|
@ -87,7 +87,7 @@ export function sendMessage(content, to, server) {
|
|||||||
const state = getState();
|
const state = getState();
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: actions.SEND_MESSAGE,
|
type: actions.ADD_MESSAGE,
|
||||||
server,
|
server,
|
||||||
tab: to,
|
tab: to,
|
||||||
message: initMessage({
|
message: initMessage({
|
||||||
|
@ -18,10 +18,6 @@ const Message = Record({
|
|||||||
breakpoints: null
|
breakpoints: null
|
||||||
});
|
});
|
||||||
|
|
||||||
function addMessage(state, { server, tab, message }) {
|
|
||||||
return state.updateIn([server, tab], List(), list => list.push(new Message(message)));
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getMessages = state => state.messages;
|
export const getMessages = state => state.messages;
|
||||||
|
|
||||||
export const getSelectedMessages = createSelector(
|
export const getSelectedMessages = createSelector(
|
||||||
@ -31,8 +27,9 @@ export const getSelectedMessages = createSelector(
|
|||||||
);
|
);
|
||||||
|
|
||||||
export default createReducer(Map(), {
|
export default createReducer(Map(), {
|
||||||
[actions.SEND_MESSAGE]: addMessage,
|
[actions.ADD_MESSAGE](state, { server, tab, message }) {
|
||||||
[actions.ADD_MESSAGE]: addMessage,
|
return state.updateIn([server, tab], List(), list => list.push(new Message(message)));
|
||||||
|
},
|
||||||
|
|
||||||
[actions.ADD_MESSAGES](state, { server, tab, messages, prepend }) {
|
[actions.ADD_MESSAGES](state, { server, tab, messages, prepend }) {
|
||||||
return state.withMutations(s => {
|
return state.withMutations(s => {
|
||||||
|
Loading…
Reference in New Issue
Block a user