webamp/js/actionCreators.test.js
2017-01-17 17:38:23 -08:00

125 lines
3 KiB
JavaScript

import {BANDS} from './constants';
import {
STOP,
SET_VOLUME,
SET_BALANCE,
TOGGLE_REPEAT,
TOGGLE_SHUFFLE,
SET_BAND_VALUE
} from './actionTypes';
import {
stop,
setVolume,
setBalance,
toggleRepeat,
toggleShuffle,
setPreamp,
setEqBand,
setEqToMax,
setEqToMin,
setEqToMid
} from './actionCreators';
test('stop', () => {
const expectedAction = {type: STOP};
expect(stop()).toEqual(expectedAction);
});
describe('setVolume', () => {
it('enforces a mimimum value', () => {
const expectedAction = {
type: SET_VOLUME,
volume: 0
};
expect(setVolume(-10)).toEqual(expectedAction);
});
it('enforces a maximum value', () => {
const expectedAction = {
type: SET_VOLUME,
volume: 100
};
expect(setVolume(110)).toEqual(expectedAction);
});
});
describe('setBalance', () => {
it('enforces a mimimum value', () => {
const expectedAction = {
type: SET_BALANCE,
balance: -100
};
expect(setBalance(-110)).toEqual(expectedAction);
});
it('enforces a maximum value', () => {
const expectedAction = {
type: SET_BALANCE,
balance: 100
};
expect(setBalance(110)).toEqual(expectedAction);
});
it('snaps to zero for positive values close to zero', () => {
const expectedAction = {
type: SET_BALANCE,
balance: 0
};
expect(setBalance(24)).toEqual(expectedAction);
});
it('snaps to zero for negative values close to zero', () => {
const expectedAction = {
type: SET_BALANCE,
balance: 0
};
expect(setBalance(-24)).toEqual(expectedAction);
});
});
test('toggleRepeat', () => {
const expectedAction = {type: TOGGLE_REPEAT};
expect(toggleRepeat()).toEqual(expectedAction);
});
test('toggleShuffle', () => {
const expectedAction = {type: TOGGLE_SHUFFLE};
expect(toggleShuffle()).toEqual(expectedAction);
});
test('setPreamp', () => {
const expectedAction = {type: SET_BAND_VALUE, band: 'preamp', value: 100};
expect(setPreamp(100)).toEqual(expectedAction);
});
test('setEqBand', () => {
const expectedAction = {type: SET_BAND_VALUE, band: 3, value: 100};
expect(setEqBand(3, 100)).toEqual(expectedAction);
});
test('setEqToMax', () => {
const mockDispatch = jest.fn();
const dispatcher = setEqToMax();
dispatcher(mockDispatch);
const expectedCalls = BANDS.map((band) => (
[{type: SET_BAND_VALUE, band, value: 100}]
));
expect(mockDispatch.mock.calls).toEqual(expectedCalls);
});
test('setEqToMin', () => {
const mockDispatch = jest.fn();
const dispatcher = setEqToMin();
dispatcher(mockDispatch);
const expectedCalls = BANDS.map((band) => (
[{type: SET_BAND_VALUE, band, value: 0}]
));
expect(mockDispatch.mock.calls).toEqual(expectedCalls);
});
test('setEqToMid', () => {
const mockDispatch = jest.fn();
const dispatcher = setEqToMid();
dispatcher(mockDispatch);
const expectedCalls = BANDS.map((band) => (
[{type: SET_BAND_VALUE, band, value: 50}]
));
expect(mockDispatch.mock.calls).toEqual(expectedCalls);
});