282 lines
5.6 KiB
JavaScript
282 lines
5.6 KiB
JavaScript
import reducer, { connect, setServerName } from '../servers';
|
|
import * as actions from '../actions';
|
|
|
|
describe('server reducer', () => {
|
|
it('adds the server on CONNECT', () => {
|
|
let state = reducer(
|
|
undefined,
|
|
connect({ host: '127.0.0.1', nick: 'nick' })
|
|
);
|
|
|
|
expect(state).toEqual({
|
|
'127.0.0.1': {
|
|
name: '127.0.0.1',
|
|
nick: 'nick',
|
|
editedNick: null,
|
|
status: {
|
|
connected: false,
|
|
error: null
|
|
},
|
|
features: {}
|
|
}
|
|
});
|
|
|
|
state = reducer(state, connect({ host: '127.0.0.1', nick: 'nick' }));
|
|
|
|
expect(state).toEqual({
|
|
'127.0.0.1': {
|
|
name: '127.0.0.1',
|
|
nick: 'nick',
|
|
editedNick: null,
|
|
status: {
|
|
connected: false,
|
|
error: null
|
|
},
|
|
features: {}
|
|
}
|
|
});
|
|
|
|
state = reducer(
|
|
state,
|
|
connect({ host: '127.0.0.2', nick: 'nick', name: 'srv' })
|
|
);
|
|
|
|
expect(state).toEqual({
|
|
'127.0.0.1': {
|
|
name: '127.0.0.1',
|
|
nick: 'nick',
|
|
editedNick: null,
|
|
status: {
|
|
connected: false,
|
|
error: null
|
|
},
|
|
features: {}
|
|
},
|
|
'127.0.0.2': {
|
|
name: 'srv',
|
|
nick: 'nick',
|
|
editedNick: null,
|
|
status: {
|
|
connected: false,
|
|
error: null
|
|
},
|
|
features: {}
|
|
}
|
|
});
|
|
});
|
|
|
|
it('removes the server on DISCONNECT', () => {
|
|
let state = {
|
|
srv: {},
|
|
srv2: {}
|
|
};
|
|
|
|
state = reducer(state, {
|
|
type: actions.DISCONNECT,
|
|
server: 'srv2'
|
|
});
|
|
|
|
expect(state).toEqual({
|
|
srv: {}
|
|
});
|
|
});
|
|
|
|
it('handles SET_SERVER_NAME', () => {
|
|
let state = {
|
|
srv: {
|
|
name: 'cake'
|
|
}
|
|
};
|
|
|
|
state = reducer(state, setServerName('pie', 'srv'));
|
|
|
|
expect(state).toEqual({
|
|
srv: {
|
|
name: 'pie'
|
|
}
|
|
});
|
|
});
|
|
|
|
it('sets editedNick when editing the nick', () => {
|
|
let state = reducer(
|
|
undefined,
|
|
connect({ host: '127.0.0.1', nick: 'nick' })
|
|
);
|
|
state = reducer(state, {
|
|
type: actions.SET_NICK,
|
|
server: '127.0.0.1',
|
|
nick: 'nick2',
|
|
editing: true
|
|
});
|
|
|
|
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', () => {
|
|
let state = reducer(
|
|
undefined,
|
|
connect({ host: '127.0.0.1', nick: '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).toMatchObject({
|
|
'127.0.0.1': {
|
|
name: '127.0.0.1',
|
|
nick: 'nick',
|
|
editedNick: null
|
|
}
|
|
});
|
|
});
|
|
|
|
it('updates the nick on SOCKET_NICK', () => {
|
|
let state = reducer(
|
|
undefined,
|
|
connect({ host: '127.0.0.1', nick: 'nick' })
|
|
);
|
|
state = reducer(state, {
|
|
type: actions.socket.NICK,
|
|
server: '127.0.0.1',
|
|
oldNick: 'nick',
|
|
newNick: 'nick2'
|
|
});
|
|
|
|
expect(state).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({ host: '127.0.0.1', nick: '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'
|
|
});
|
|
|
|
expect(state).toMatchObject({
|
|
'127.0.0.1': {
|
|
name: '127.0.0.1',
|
|
nick: 'nick',
|
|
editedNick: null
|
|
}
|
|
});
|
|
});
|
|
|
|
it('adds the servers on SOCKET_SERVERS', () => {
|
|
let state = reducer(undefined, {
|
|
type: actions.socket.SERVERS,
|
|
data: [
|
|
{
|
|
host: '127.0.0.1',
|
|
name: 'stuff',
|
|
nick: 'nick',
|
|
status: {
|
|
connected: true
|
|
}
|
|
},
|
|
{
|
|
host: '127.0.0.2',
|
|
name: 'stuffz',
|
|
nick: 'nick2',
|
|
status: {
|
|
connected: false
|
|
}
|
|
}
|
|
]
|
|
});
|
|
|
|
expect(state).toEqual({
|
|
'127.0.0.1': {
|
|
name: 'stuff',
|
|
nick: 'nick',
|
|
editedNick: null,
|
|
status: {
|
|
connected: true
|
|
},
|
|
features: {}
|
|
},
|
|
'127.0.0.2': {
|
|
name: 'stuffz',
|
|
nick: 'nick2',
|
|
editedNick: null,
|
|
status: {
|
|
connected: false
|
|
},
|
|
features: {}
|
|
}
|
|
});
|
|
});
|
|
|
|
it('updates connection status on SOCKET_CONNECTION_UPDATE', () => {
|
|
let state = reducer(
|
|
undefined,
|
|
connect({ host: '127.0.0.1', nick: 'nick' })
|
|
);
|
|
state = reducer(state, {
|
|
type: actions.socket.CONNECTION_UPDATE,
|
|
server: '127.0.0.1',
|
|
connected: true
|
|
});
|
|
|
|
expect(state).toEqual({
|
|
'127.0.0.1': {
|
|
name: '127.0.0.1',
|
|
nick: 'nick',
|
|
editedNick: null,
|
|
status: {
|
|
connected: true
|
|
},
|
|
features: {}
|
|
}
|
|
});
|
|
|
|
state = reducer(state, {
|
|
type: actions.socket.CONNECTION_UPDATE,
|
|
server: '127.0.0.1',
|
|
connected: false,
|
|
error: 'Bad stuff happened'
|
|
});
|
|
|
|
expect(state).toEqual({
|
|
'127.0.0.1': {
|
|
name: '127.0.0.1',
|
|
nick: 'nick',
|
|
editedNick: null,
|
|
status: {
|
|
connected: false,
|
|
error: 'Bad stuff happened'
|
|
},
|
|
features: {}
|
|
}
|
|
});
|
|
});
|
|
});
|