/* eslint-env jest */ import strokeWidthReducer from '../../src/reducers/stroke-width'; import {MAX_STROKE_WIDTH, changeStrokeWidth} from '../../src/reducers/stroke-width'; import {setSelectedItems} from '../../src/reducers/selected-items'; import {mockPaperRootItem} from '../__mocks__/paperMocks'; test('initialState', () => { let defaultState; expect(strokeWidthReducer(defaultState /* state */, {type: 'anything'} /* action */)).toBeDefined(); expect(strokeWidthReducer(defaultState /* state */, {type: 'anything'} /* action */)).toBeGreaterThanOrEqual(0); }); test('changestrokeWidth', () => { let defaultState; const newstrokeWidth = 23; expect(strokeWidthReducer(defaultState /* state */, changeStrokeWidth(newstrokeWidth) /* action */)) .toEqual(newstrokeWidth); expect(strokeWidthReducer(1 /* state */, changeStrokeWidth(newstrokeWidth) /* action */)) .toEqual(newstrokeWidth); expect(strokeWidthReducer(1 /* state */, changeStrokeWidth(-1) /* action */)) .toEqual(0); expect(strokeWidthReducer(1 /* state */, changeStrokeWidth(453452352) /* action */)) .toEqual(MAX_STROKE_WIDTH); }); test('changeStrokeWidthViaSelectedItems', () => { let defaultState; const strokeWidth1 = 6; let strokeWidth2; // no outline let selectedItems = [mockPaperRootItem({strokeColor: '#000', strokeWidth: strokeWidth1})]; expect(strokeWidthReducer(defaultState /* state */, setSelectedItems(selectedItems) /* action */)) .toEqual(strokeWidth1); selectedItems = [mockPaperRootItem({strokeColor: '#000', strokeWidth: strokeWidth2})]; expect(strokeWidthReducer(defaultState /* state */, setSelectedItems(selectedItems) /* action */)) .toEqual(0); // Convert no outline to stroke width 0 selectedItems = [mockPaperRootItem({strokeColor: '#000', strokeWidth: strokeWidth1}), mockPaperRootItem({strokeColor: '#000', strokeWidth: strokeWidth2})]; expect(strokeWidthReducer(defaultState /* state */, setSelectedItems(selectedItems) /* action */)) .toEqual(null); // null indicates mixed for stroke width }); test('showNoStrokeWidthIfNoStrokeColor', () => { let defaultState; const selectedItems = [mockPaperRootItem({strokeColor: null, strokeWidth: 10})]; expect(strokeWidthReducer(defaultState /* state */, setSelectedItems(selectedItems) /* action */)) .toEqual(0); }); test('invalidChangestrokeWidth', () => { const origState = {strokeWidth: 1}; expect(strokeWidthReducer(origState /* state */, changeStrokeWidth('invalid argument') /* action */)) .toBe(origState); expect(strokeWidthReducer(origState /* state */, changeStrokeWidth() /* action */)) .toBe(origState); });