UNPKG

core-graphics

Version:

A core library for creating shape-based graphic editors

133 lines (89 loc) 6.18 kB
'use strict'; var _tap = require('tap'); var _editorStateReducer = require('../editor-state-reducer'); var _editorStateReducer2 = _interopRequireDefault(_editorStateReducer); var _editorState = require('../editor-state'); var _editorEvents = require('../editor-events'); var _modes = require('../../declarations/modes'); var _testHistorySpec = require('./test-history.spec.js'); var _testHistorySpec2 = _interopRequireDefault(_testHistorySpec); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var EDITOR_STATE = (0, _editorStateReducer2.default)((0, _editorState.getInitialEditorState)({ shapesDeclarations: {}, author: _testHistorySpec.ALICE }), (0, _editorEvents.updateHistory)(_testHistorySpec2.default)); var ALICE_BOB_LINES_EDITOR_STATE = (0, _editorStateReducer2.default)((0, _editorState.getInitialEditorState)({ shapesDeclarations: {}, author: _testHistorySpec.ALICE }), (0, _editorEvents.updateHistory)(_testHistorySpec.ALICE_BOB_LINES)); (0, _tap.test)('selection: shape mouse down in select mode -> selected mode', function (t) { var testId = _testHistorySpec.ALICE_LINE.id; var button = _editorEvents.ButtonType.Left; var ev = (0, _editorEvents.canvasShapeMouseDown)({ id: testId, button: button }); var afterDown = (0, _editorStateReducer2.default)(ALICE_BOB_LINES_EDITOR_STATE, ev); t.deepEqual(afterDown.mode, (0, _modes.modeSelected)([testId])); t.end(); }); (0, _tap.test)('selection: background mouse up in selected mode -> select mode', function (t) { var testId = _testHistorySpec.ALICE_LINE.id; var button = _editorEvents.ButtonType.Left; var evs = [(0, _editorEvents.canvasShapeMouseDown)({ id: testId, button: button }), (0, _editorEvents.canvasBackgroundMouseDown)(button)]; var afterBackgroundDown = evs.reduce(_editorStateReducer2.default, EDITOR_STATE); t.deepEqual(afterBackgroundDown.mode, (0, _modes.modeSelect)()); t.end(); }); (0, _tap.test)('selection: clicking on a non-selected shape selects it', function (t) { var aliceShapeId = _testHistorySpec.ALICE_LINE.id; var bobShapeId = _testHistorySpec.BOB_LINE.id; var button = _editorEvents.ButtonType.Left; var evs = [(0, _editorEvents.canvasShapeMouseDown)({ id: aliceShapeId, button: button }), (0, _editorEvents.canvasShapeMouseDown)({ id: bobShapeId, button: button })]; var afterSelected = evs.reduce(_editorStateReducer2.default, ALICE_BOB_LINES_EDITOR_STATE); t.deepEqual(afterSelected.mode, (0, _modes.modeSelected)([bobShapeId])); t.end(); }); (0, _tap.test)('selection: clicking on an already selected shape leaves mode the same', function (t) { var aliceShapeId = _testHistorySpec.ALICE_LINE.id; var bobShapeId = _testHistorySpec.BOB_LINE.id; var button = _editorEvents.ButtonType.Left; var initialMode = (0, _modes.modeSelected)([aliceShapeId, bobShapeId]); var expectedMode = initialMode; var evs = [(0, _editorEvents.setMode)(initialMode), (0, _editorEvents.canvasShapeMouseDown)({ id: aliceShapeId, button: button }), (0, _editorEvents.canvasShapeMouseDown)({ id: bobShapeId, button: button })]; var afterSelected = evs.reduce(_editorStateReducer2.default, ALICE_BOB_LINES_EDITOR_STATE); t.deepEqual(afterSelected.mode, expectedMode); t.end(); }); (0, _tap.test)('selection: clicking a non-selected shape with =shift= additionally selects it', function (t) { var aliceShapeId = _testHistorySpec.ALICE_LINE.id; var bobShapeId = _testHistorySpec.BOB_LINE.id; var button = _editorEvents.ButtonType.Left; var expectedMode = (0, _modes.modeSelected)([aliceShapeId, bobShapeId]); var evs = [(0, _editorEvents.canvasShapeMouseDown)({ id: aliceShapeId, button: button }), (0, _editorEvents.canvasModifierKeyDown)(_editorEvents.SceneModifierKey.Shift), (0, _editorEvents.canvasShapeMouseDown)({ id: bobShapeId, button: button })]; var afterSelected = evs.reduce(_editorStateReducer2.default, ALICE_BOB_LINES_EDITOR_STATE); t.deepEqual(afterSelected.mode, expectedMode); t.end(); }); (0, _tap.test)('selection: clicking a selected shape with =shift= de-selects it', function (t) { var aliceShapeId = _testHistorySpec.ALICE_LINE.id; var bobShapeId = _testHistorySpec.BOB_LINE.id; var button = _editorEvents.ButtonType.Left; var expectedMode = (0, _modes.modeSelected)([aliceShapeId]); var evs = [(0, _editorEvents.canvasShapeMouseDown)({ id: aliceShapeId, button: button }), (0, _editorEvents.canvasModifierKeyDown)(_editorEvents.SceneModifierKey.Shift), (0, _editorEvents.canvasShapeMouseDown)({ id: bobShapeId, button: button }), (0, _editorEvents.canvasShapeMouseDown)({ id: bobShapeId, button: button })]; var afterDeselected = evs.reduce(_editorStateReducer2.default, ALICE_BOB_LINES_EDITOR_STATE); t.deepEqual(afterDeselected.mode, expectedMode); t.end(); }); (0, _tap.test)('selection: falls back to select mode when no shapes are selected', function (t) { var aliceShapeId = _testHistorySpec.ALICE_LINE.id; var bobShapeId = _testHistorySpec.BOB_LINE.id; var button = _editorEvents.ButtonType.Left; var initialMode = (0, _modes.modeSelected)([aliceShapeId, bobShapeId]); var expectedMode = (0, _modes.modeSelect)(); var evs = [(0, _editorEvents.setMode)(initialMode), (0, _editorEvents.canvasModifierKeyDown)(_editorEvents.SceneModifierKey.Shift), (0, _editorEvents.canvasShapeMouseDown)({ id: aliceShapeId, button: button }), (0, _editorEvents.canvasShapeMouseDown)({ id: bobShapeId, button: button })]; var afterDeselected = evs.reduce(_editorStateReducer2.default, ALICE_BOB_LINES_EDITOR_STATE); t.deepEqual(afterDeselected.mode, expectedMode); t.end(); }); (0, _tap.test)('selection: invalid selected shapes are excluded', function (t) { var aliceShapeId = _testHistorySpec.ALICE_LINE.id; var nonExistentShapeId = 'some-id'; var initialMode = (0, _modes.modeSelected)([aliceShapeId, nonExistentShapeId]); var expectedMode = (0, _modes.modeSelected)([aliceShapeId]); var evs = [(0, _editorEvents.setMode)(initialMode)]; var afterExcluded = evs.reduce(_editorStateReducer2.default, ALICE_BOB_LINES_EDITOR_STATE); t.deepEqual(afterExcluded.mode, expectedMode); t.end(); });