115 lines
3.2 KiB
JavaScript
115 lines
3.2 KiB
JavaScript
import reducer, { setSelectedTab } from '../tab';
|
|
import * as actions from '../actions';
|
|
import { locationChanged } from 'utils/router';
|
|
|
|
describe('tab reducer', () => {
|
|
it('selects the tab and adds it to history', () => {
|
|
let state = reducer(undefined, setSelectedTab('srv', '#chan'));
|
|
|
|
expect(state).toEqual({
|
|
selected: { server: 'srv', name: '#chan' },
|
|
history: [{ server: 'srv', name: '#chan' }]
|
|
});
|
|
|
|
state = reducer(state, setSelectedTab('srv', 'user1'));
|
|
|
|
expect(state).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).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).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).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, locationChanged('settings', {}, {}));
|
|
|
|
expect(state).toEqual({
|
|
selected: {},
|
|
history: [{ server: 'srv', name: '#chan' }]
|
|
});
|
|
});
|
|
|
|
it('selects the tab and adds it to history when navigating to a tab', () => {
|
|
const state = reducer(
|
|
undefined,
|
|
locationChanged(
|
|
'chat',
|
|
{
|
|
server: 'srv',
|
|
name: '#chan'
|
|
},
|
|
{}
|
|
)
|
|
);
|
|
|
|
expect(state).toEqual({
|
|
selected: { server: 'srv', name: '#chan' },
|
|
history: [{ server: 'srv', name: '#chan' }]
|
|
});
|
|
});
|
|
});
|