Add tab reducer tests
This commit is contained in:
parent
93a5732e7a
commit
164c47d1a6
107
client/src/js/__tests__/reducer-tab.test.js
Normal file
107
client/src/js/__tests__/reducer-tab.test.js
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
import { LOCATION_CHANGE } from 'react-router-redux';
|
||||||
|
import reducer from '../reducers/tab';
|
||||||
|
import * as actions from '../actions';
|
||||||
|
import { setSelectedTab } from '../actions/tab';
|
||||||
|
|
||||||
|
describe('reducers/tab', () => {
|
||||||
|
it('sets the tab and adds it to history', () => {
|
||||||
|
let state = reducer(undefined, setSelectedTab('srv', '#chan'));
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
selected: { server: 'srv', name: '#chan' },
|
||||||
|
history: [
|
||||||
|
{ server: 'srv', name: '#chan' }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
state = reducer(state, setSelectedTab('srv', 'user1'));
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
selected: { server: 'srv', name: 'user1' },
|
||||||
|
history: [
|
||||||
|
{ server: 'srv', name: '#chan' },
|
||||||
|
{ server: 'srv', name: 'user1' }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('removes the tab from history on PART', () => {
|
||||||
|
let state = reducer(undefined, setSelectedTab('srv', '#chan'));
|
||||||
|
state = reducer(state, setSelectedTab('srv1', 'bob'));
|
||||||
|
state = reducer(state, setSelectedTab('srv', '#chan'));
|
||||||
|
state = reducer(state, setSelectedTab('srv', '#chan3'));
|
||||||
|
|
||||||
|
state = reducer(state, {
|
||||||
|
type: actions.PART,
|
||||||
|
server: 'srv',
|
||||||
|
channels: ['#chan']
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
selected: { server: 'srv', name: '#chan3' },
|
||||||
|
history: [
|
||||||
|
{ server: 'srv1', name: 'bob' },
|
||||||
|
{ server: 'srv', name: '#chan3' }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('removes the tab from history on CLOSE_PRIVATE_CHAT', () => {
|
||||||
|
let state = reducer(undefined, setSelectedTab('srv', '#chan'));
|
||||||
|
state = reducer(state, setSelectedTab('srv1', 'bob'));
|
||||||
|
state = reducer(state, setSelectedTab('srv', '#chan'));
|
||||||
|
state = reducer(state, setSelectedTab('srv', '#chan3'));
|
||||||
|
|
||||||
|
state = reducer(state, {
|
||||||
|
type: actions.CLOSE_PRIVATE_CHAT,
|
||||||
|
server: 'srv1',
|
||||||
|
nick: 'bob'
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
selected: { server: 'srv', name: '#chan3' },
|
||||||
|
history: [
|
||||||
|
{ server: 'srv', name: '#chan' },
|
||||||
|
{ server: 'srv', name: '#chan' },
|
||||||
|
{ server: 'srv', name: '#chan3' }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('removes all tabs related to server from history on DISCONNECT', () => {
|
||||||
|
let state = reducer(undefined, setSelectedTab('srv', '#chan'));
|
||||||
|
state = reducer(state, setSelectedTab('srv1', 'bob'));
|
||||||
|
state = reducer(state, setSelectedTab('srv', '#chan'));
|
||||||
|
state = reducer(state, setSelectedTab('srv', '#chan3'));
|
||||||
|
|
||||||
|
state = reducer(state, {
|
||||||
|
type: actions.DISCONNECT,
|
||||||
|
server: 'srv',
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
selected: { server: 'srv', name: '#chan3' },
|
||||||
|
history: [
|
||||||
|
{ server: 'srv1', name: 'bob' },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('clears the tab when navigating to a non-tab page', () => {
|
||||||
|
let state = reducer(undefined, setSelectedTab('srv', '#chan'));
|
||||||
|
|
||||||
|
state = reducer(state, {
|
||||||
|
type: LOCATION_CHANGE,
|
||||||
|
payload: {
|
||||||
|
pathname: '/settings'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(state.toJS()).toEqual({
|
||||||
|
selected: { server: null, name: null },
|
||||||
|
history: [
|
||||||
|
{ server: 'srv', name: '#chan' }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user