dispatch/client/js/state/__tests__/reducer-networks.test.js

262 lines
5.3 KiB
JavaScript
Raw Normal View History

2020-06-15 08:58:51 +00:00
import reducer, { connect, setNetworkName } from '../networks';
2017-04-25 03:13:57 +00:00
import * as actions from '../actions';
2020-06-15 08:58:51 +00:00
describe('network reducer', () => {
it('adds the network on CONNECT', () => {
2018-05-16 03:02:48 +00:00
let state = reducer(
undefined,
connect({ host: '127.0.0.1', nick: 'nick' })
);
2017-04-25 03:13:57 +00:00
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
2017-04-25 03:13:57 +00:00
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: false,
error: null,
2019-01-27 07:53:07 +00:00
features: {}
2017-04-25 03:13:57 +00:00
}
});
2018-05-16 03:02:48 +00:00
state = reducer(state, connect({ host: '127.0.0.1', nick: 'nick' }));
2017-04-25 03:13:57 +00:00
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
2017-04-25 03:13:57 +00:00
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: false,
error: null,
2019-01-27 07:53:07 +00:00
features: {}
2017-04-25 03:13:57 +00:00
}
});
2018-04-05 23:46:22 +00:00
state = reducer(
state,
2018-05-16 03:02:48 +00:00
connect({ host: '127.0.0.2', nick: 'nick', name: 'srv' })
2018-04-05 23:46:22 +00:00
);
2017-04-25 03:13:57 +00:00
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
2017-04-25 03:13:57 +00:00
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: false,
error: null,
2019-01-27 07:53:07 +00:00
features: {}
2017-04-25 03:13:57 +00:00
},
'127.0.0.2': {
name: 'srv',
nick: 'nick',
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: false,
error: null,
2019-01-27 07:53:07 +00:00
features: {}
2017-04-25 03:13:57 +00:00
}
});
});
2020-06-15 08:58:51 +00:00
it('removes the network on DISCONNECT', () => {
2018-04-25 03:36:27 +00:00
let state = {
2017-04-25 03:13:57 +00:00
srv: {},
srv2: {}
2018-04-25 03:36:27 +00:00
};
2017-04-25 03:13:57 +00:00
state = reducer(state, {
type: actions.DISCONNECT,
2020-06-15 08:58:51 +00:00
network: 'srv2'
2017-04-25 03:13:57 +00:00
});
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
2017-04-25 03:13:57 +00:00
srv: {}
});
});
2020-06-15 08:58:51 +00:00
it('handles SET_NETWORK_NAME', () => {
2018-04-25 03:36:27 +00:00
let state = {
srv: {
name: 'cake'
}
2018-04-25 03:36:27 +00:00
};
2020-06-15 08:58:51 +00:00
state = reducer(state, setNetworkName('pie', 'srv'));
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
srv: {
name: 'pie'
}
});
});
it('sets editedNick when editing the nick', () => {
2018-05-16 03:02:48 +00:00
let state = reducer(
undefined,
connect({ host: '127.0.0.1', nick: 'nick' })
);
state = reducer(state, {
type: actions.SET_NICK,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1',
nick: 'nick2',
editing: true
});
2018-04-25 03:36:27 +00:00
expect(state).toMatchObject({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: 'nick2'
}
});
});
it('clears editedNick when receiving an empty nick after editing finishes', () => {
2018-05-16 03:02:48 +00:00
let state = reducer(
undefined,
connect({ host: '127.0.0.1', nick: 'nick' })
);
state = reducer(state, {
type: actions.SET_NICK,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1',
nick: 'nick2',
editing: true
});
state = reducer(state, {
type: actions.SET_NICK,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1',
nick: ''
});
2018-04-25 03:36:27 +00:00
expect(state).toMatchObject({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null
}
});
});
2017-04-25 03:13:57 +00:00
it('updates the nick on SOCKET_NICK', () => {
2018-05-16 03:02:48 +00:00
let state = reducer(
undefined,
connect({ host: '127.0.0.1', nick: 'nick' })
);
2017-04-25 03:13:57 +00:00
state = reducer(state, {
type: actions.socket.NICK,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1',
oldNick: 'nick',
newNick: 'nick2'
});
2018-04-25 03:36:27 +00:00
expect(state).toMatchObject({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick2',
editedNick: null
}
});
});
it('clears editedNick on SOCKET_NICK_FAIL', () => {
2018-05-16 03:02:48 +00:00
let state = reducer(
undefined,
connect({ host: '127.0.0.1', nick: 'nick' })
);
state = reducer(state, {
type: actions.SET_NICK,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1',
nick: 'nick2',
editing: true
});
state = reducer(state, {
type: actions.socket.NICK_FAIL,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1'
2017-04-25 03:13:57 +00:00
});
2018-04-25 03:36:27 +00:00
expect(state).toMatchObject({
2017-04-25 03:13:57 +00:00
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null
2017-04-25 03:13:57 +00:00
}
});
});
2020-06-24 23:50:10 +00:00
it('adds the networks on INIT', () => {
2017-04-25 03:13:57 +00:00
let state = reducer(undefined, {
2020-06-24 23:50:10 +00:00
type: actions.INIT,
networks: [
2017-04-25 03:13:57 +00:00
{
host: '127.0.0.1',
name: 'stuff',
nick: 'nick',
2020-06-15 08:58:51 +00:00
connected: true
2017-04-25 03:13:57 +00:00
},
{
host: '127.0.0.2',
name: 'stuffz',
nick: 'nick2',
2020-06-15 08:58:51 +00:00
connected: false
2018-04-05 23:46:22 +00:00
}
2017-04-25 03:13:57 +00:00
]
});
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
2017-04-25 03:13:57 +00:00
'127.0.0.1': {
name: 'stuff',
nick: 'nick',
2018-05-16 03:02:48 +00:00
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: true,
2019-01-27 07:53:07 +00:00
features: {}
2017-04-25 03:13:57 +00:00
},
'127.0.0.2': {
name: 'stuffz',
nick: 'nick2',
2018-05-16 03:02:48 +00:00
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: false,
2019-01-27 07:53:07 +00:00
features: {}
2017-04-25 03:13:57 +00:00
}
});
});
it('updates connection status on SOCKET_CONNECTION_UPDATE', () => {
2018-05-16 03:02:48 +00:00
let state = reducer(
undefined,
connect({ host: '127.0.0.1', nick: 'nick' })
);
2017-04-25 03:13:57 +00:00
state = reducer(state, {
type: actions.socket.CONNECTION_UPDATE,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1',
connected: true
});
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: true,
2019-01-27 07:53:07 +00:00
features: {}
}
});
state = reducer(state, {
type: actions.socket.CONNECTION_UPDATE,
2020-06-15 08:58:51 +00:00
network: '127.0.0.1',
connected: false,
error: 'Bad stuff happened'
2017-04-25 03:13:57 +00:00
});
2018-04-25 03:36:27 +00:00
expect(state).toEqual({
2017-04-25 03:13:57 +00:00
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
2020-06-15 08:58:51 +00:00
connected: false,
error: 'Bad stuff happened',
2019-01-27 07:53:07 +00:00
features: {}
2017-04-25 03:13:57 +00:00
}
});
});
});