mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-18 07:23:03 +00:00
90 lines
2.6 KiB
TypeScript
90 lines
2.6 KiB
TypeScript
import * as deepFreeze from 'deep-freeze';
|
|
|
|
import { headerReducer } from './header.reducer';
|
|
import {
|
|
HeaderCollapseAction,
|
|
HeaderExpandAction,
|
|
HeaderToggleAction
|
|
} from './header.actions';
|
|
|
|
class NullAction extends HeaderCollapseAction {
|
|
type = null;
|
|
|
|
constructor() {
|
|
super();
|
|
}
|
|
}
|
|
|
|
describe('headerReducer', () => {
|
|
it('should return the current state when no valid actions have been made', () => {
|
|
const state = { navCollapsed: false };
|
|
const action = new NullAction();
|
|
const newState = headerReducer(state, action);
|
|
|
|
expect(newState).toEqual(state);
|
|
});
|
|
|
|
it('should start with navCollapsed = true', () => {
|
|
const action = new NullAction();
|
|
const initialState = headerReducer(undefined, action);
|
|
|
|
// The navigation starts collapsed
|
|
expect(initialState.navCollapsed).toEqual(true);
|
|
});
|
|
|
|
it('should set navCollapsed to true in response to the COLLAPSE action', () => {
|
|
const state = { navCollapsed: false };
|
|
const action = new HeaderCollapseAction();
|
|
const newState = headerReducer(state, action);
|
|
|
|
expect(newState.navCollapsed).toEqual(true);
|
|
});
|
|
|
|
it('should perform the COLLAPSE action without affecting the previous state', () => {
|
|
const state = { navCollapsed: false };
|
|
deepFreeze(state);
|
|
|
|
const action = new HeaderCollapseAction();
|
|
headerReducer(state, action);
|
|
|
|
// no expect required, deepFreeze will ensure an exception is thrown if the state
|
|
// is mutated, and any uncaught exception will cause the test to fail
|
|
});
|
|
|
|
it('should set navCollapsed to false in response to the EXPAND action', () => {
|
|
const state = { navCollapsed: true };
|
|
const action = new HeaderExpandAction();
|
|
const newState = headerReducer(state, action);
|
|
|
|
expect(newState.navCollapsed).toEqual(false);
|
|
});
|
|
|
|
it('should perform the EXPAND action without affecting the previous state', () => {
|
|
const state = { navCollapsed: true };
|
|
deepFreeze(state);
|
|
|
|
const action = new HeaderExpandAction();
|
|
headerReducer(state, action);
|
|
});
|
|
|
|
it('should flip the value of navCollapsed in response to the TOGGLE action', () => {
|
|
const state1 = { navCollapsed: true };
|
|
const action = new HeaderToggleAction();
|
|
|
|
const state2 = headerReducer(state1, action);
|
|
const state3 = headerReducer(state2, action);
|
|
|
|
expect(state2.navCollapsed).toEqual(false);
|
|
expect(state3.navCollapsed).toEqual(true);
|
|
});
|
|
|
|
it('should perform the TOGGLE action without affecting the previous state', () => {
|
|
const state = { navCollapsed: true };
|
|
deepFreeze(state);
|
|
|
|
const action = new HeaderToggleAction();
|
|
headerReducer(state, action);
|
|
});
|
|
|
|
});
|