Add tab reducer tests

This commit is contained in:
Ken-Håvard Lieng 2017-04-24 03:08:48 +02:00
parent 93a5732e7a
commit 164c47d1a6

View 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' }
]
});
});
});