dispatch/client/src/js/state/__tests__/reducer-servers.test.js

259 lines
5.5 KiB
JavaScript
Raw Normal View History

2017-04-25 03:13:57 +00:00
import Immutable from 'immutable';
import reducer, { connect, setServerName } from '../servers';
2017-04-25 03:13:57 +00:00
import * as actions from '../actions';
describe('server reducer', () => {
2017-04-25 03:13:57 +00:00
it('adds the server on CONNECT', () => {
let state = reducer(undefined, connect('127.0.0.1:1337', 'nick', {}));
expect(state.toJS()).toEqual({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
status: {
connected: false,
error: null
}
2017-04-25 03:13:57 +00:00
}
});
state = reducer(state, connect('127.0.0.1:1337', 'nick', {}));
expect(state.toJS()).toEqual({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
status: {
connected: false,
error: null
}
2017-04-25 03:13:57 +00:00
}
});
state = reducer(state, connect('127.0.0.2:1337', 'nick', {
name: 'srv'
}));
expect(state.toJS()).toEqual({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
status: {
connected: false,
error: null
}
2017-04-25 03:13:57 +00:00
},
'127.0.0.2': {
name: 'srv',
nick: 'nick',
editedNick: null,
status: {
connected: false,
error: null
}
2017-04-25 03:13:57 +00:00
}
});
});
it('removes the server on DISCONNECT', () => {
let state = Immutable.fromJS({
srv: {},
srv2: {}
});
state = reducer(state, {
type: actions.DISCONNECT,
server: 'srv2'
});
expect(state.toJS()).toEqual({
srv: {}
});
});
it('handles SET_SERVER_NAME', () => {
let state = Immutable.fromJS({
srv: {
name: 'cake'
}
});
state = reducer(state, setServerName('pie', 'srv'));
expect(state.toJS()).toEqual({
srv: {
name: 'pie'
}
});
});
it('sets editedNick when editing the nick', () => {
let state = reducer(undefined, connect('127.0.0.1:1337', 'nick', {}));
state = reducer(state, {
type: actions.SET_NICK,
server: '127.0.0.1',
nick: 'nick2',
editing: true
});
expect(state.toJS()).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', () => {
let state = reducer(undefined, connect('127.0.0.1:1337', 'nick', {}));
state = reducer(state, {
type: actions.SET_NICK,
server: '127.0.0.1',
nick: 'nick2',
editing: true
});
state = reducer(state, {
type: actions.SET_NICK,
server: '127.0.0.1',
nick: ''
});
expect(state.toJS()).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', () => {
let state = reducer(undefined, connect('127.0.0.1:1337', 'nick', {}));
state = reducer(state, {
type: actions.socket.NICK,
2017-04-25 03:13:57 +00:00
server: '127.0.0.1',
oldNick: 'nick',
newNick: 'nick2'
});
expect(state.toJS()).toMatchObject({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick2',
editedNick: null
}
});
});
it('clears editedNick on SOCKET_NICK_FAIL', () => {
let state = reducer(undefined, connect('127.0.0.1:1337', 'nick', {}));
state = reducer(state, {
type: actions.SET_NICK,
server: '127.0.0.1',
nick: 'nick2',
editing: true
});
state = reducer(state, {
type: actions.socket.NICK_FAIL,
server: '127.0.0.1'
2017-04-25 03:13:57 +00:00
});
expect(state.toJS()).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
}
});
});
it('adds the servers on SOCKET_SERVERS', () => {
let state = reducer(undefined, {
type: actions.socket.SERVERS,
2017-04-25 03:13:57 +00:00
data: [
{
host: '127.0.0.1',
name: 'stuff',
nick: 'nick',
status: {
connected: true
}
2017-04-25 03:13:57 +00:00
},
{
host: '127.0.0.2',
name: 'stuffz',
nick: 'nick2',
status: {
connected: false
}
2017-04-25 03:13:57 +00:00
},
]
});
expect(state.toJS()).toEqual({
'127.0.0.1': {
name: 'stuff',
nick: 'nick',
editedNick: null,
status: {
connected: true,
error: null
}
2017-04-25 03:13:57 +00:00
},
'127.0.0.2': {
name: 'stuffz',
nick: 'nick2',
editedNick: null,
status: {
connected: false,
error: null
}
2017-04-25 03:13:57 +00:00
}
});
});
it('updates connection status on SOCKET_CONNECTION_UPDATE', () => {
let state = reducer(undefined, connect('127.0.0.1:1337', 'nick', {}));
state = reducer(state, {
type: actions.socket.CONNECTION_UPDATE,
server: '127.0.0.1',
connected: true
});
expect(state.toJS()).toEqual({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
status: {
connected: true,
error: null
}
}
});
state = reducer(state, {
type: actions.socket.CONNECTION_UPDATE,
server: '127.0.0.1',
connected: false,
error: 'Bad stuff happened'
2017-04-25 03:13:57 +00:00
});
expect(state.toJS()).toEqual({
'127.0.0.1': {
name: '127.0.0.1',
nick: 'nick',
editedNick: null,
status: {
connected: false,
error: 'Bad stuff happened'
}
2017-04-25 03:13:57 +00:00
}
});
});
});