UNPKG

core-graphics

Version:

A core library for creating shape-based graphic editors

258 lines (169 loc) 10.7 kB
'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // import { getInitialEditorState } from '../editor-state'; var _tap = require('tap'); var _editorStateReducer2 = require('../editor-state-reducer'); var _editorStateReducer3 = _interopRequireDefault(_editorStateReducer2); var _editorEvents = require('../editor-events'); var _historyEvent = require('../../history/history-event'); var _historyReducer = require('../../history/history-reducer'); var _editorAction = require('../../editor-state/editor-action'); var _modes = require('../../declarations/modes'); var _testHistorySpec = require('./test-history.spec.js'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var INITIAL_STATE = _testHistorySpec.ALICE_BOB_EVE_LINES_EDITOR_STATE; (0, _tap.test)('shapes : adding', function (t) { var ev = (0, _editorEvents.addShape)(_testHistorySpec.ALICE_LINE); var addedShape = (0, _editorStateReducer3.default)(_testHistorySpec.EMPTY_ALICE_STATE, ev); var editorActionsQueue = addedShape.editorActionsQueue; t.equal(editorActionsQueue.length, 1); var action = editorActionsQueue[0]; t.assert((0, _editorAction.isPushHistoryEventAction)(action)); var event = action.payload.ev; t.assert((0, _historyEvent.isShapeAddEvent)(event)); var shapeData = event.payload; t.deepEqual(Object.assign({}, shapeData, { id: _testHistorySpec.ALICE_LINE_ID }), _testHistorySpec.ALICE_LINE); t.end(); }); (0, _tap.test)('shapes : adding with selectWhenAdded', function (t) { var ev = (0, _editorEvents.addShape)(_testHistorySpec.ALICE_LINE, { selectWhenAdded: true }); var addedShape = (0, _editorStateReducer3.default)(_testHistorySpec.EMPTY_ALICE_STATE, ev); var editorActionsQueue = addedShape.editorActionsQueue; t.equal(editorActionsQueue.length, 1); var action = editorActionsQueue[0]; t.assert((0, _editorAction.isPushHistoryEventAction)(action)); var event = action.payload.ev; t.assert((0, _historyEvent.isShapeAddEvent)(event)); var shapeData = event.payload; t.deepEqual(Object.assign({}, shapeData, { id: _testHistorySpec.ALICE_LINE_ID }), _testHistorySpec.ALICE_LINE); var id = shapeData.id; t.deepEqual(addedShape.mode, (0, _modes.modeSelected)([id])); t.end(); }); (0, _tap.test)('shapes : removing single', function (t) { var shapeId = _testHistorySpec.ALICE_LINE_ID; var evs = [(0, _editorEvents.setMode)((0, _modes.modeSelect)()), (0, _editorEvents.removeShapes)([shapeId])]; var expectedQueue = [(0, _editorAction.pushHistoryEventAction)((0, _historyEvent.shapeRemoveEvent)(shapeId))]; // initial state has the shape t.assert(INITIAL_STATE.scene.shapesOrder.indexOf(shapeId) >= -1); var removedShapeState = evs.reduce(_editorStateReducer3.default, INITIAL_STATE); var editorActionsQueue = removedShapeState.editorActionsQueue; t.deepEqual(editorActionsQueue, expectedQueue); t.end(); }); (0, _tap.test)('shapes : removing many', function (t) { var shapes = [_testHistorySpec.ALICE_LINE.id, _testHistorySpec.BOB_LINE.id]; var evs = [(0, _editorEvents.setMode)((0, _modes.modeSelect)()), (0, _editorEvents.removeShapes)(shapes)]; var expectedQueue = [(0, _editorAction.pushHistoryEventAction)((0, _historyEvent.historyEventsGroup)([(0, _historyEvent.shapeRemoveEvent)(_testHistorySpec.ALICE_LINE.id), (0, _historyEvent.shapeRemoveEvent)(_testHistorySpec.BOB_LINE.id)]))]; var removedShapeState = evs.reduce(_editorStateReducer3.default, INITIAL_STATE); var editorActionsQueue = removedShapeState.editorActionsQueue; t.deepEqual(editorActionsQueue, expectedQueue); t.end(); }); (0, _tap.test)('shapes : removing single non-existent doesn\'t generate history event', function (t) { var shapeId = 'some-shape-id'; var evs = [(0, _editorEvents.setMode)((0, _modes.modeSelect)()), (0, _editorEvents.removeShapes)([shapeId])]; var expectedQueue = []; var removedShapeState = evs.reduce(_editorStateReducer3.default, INITIAL_STATE); var editorActionsQueue = removedShapeState.editorActionsQueue; t.deepEqual(editorActionsQueue, expectedQueue); t.end(); }); (0, _tap.test)('shapes : removing many non-existent doesn\'t generate history event', function (t) { var shapes = [_testHistorySpec.ALICE_LINE.id, _testHistorySpec.BOB_LINE.id, 'some-id']; var evs = [(0, _editorEvents.setMode)((0, _modes.modeSelect)()), (0, _editorEvents.removeShapes)(shapes)]; var expectedQueue = [(0, _editorAction.pushHistoryEventAction)((0, _historyEvent.historyEventsGroup)([(0, _historyEvent.shapeRemoveEvent)(_testHistorySpec.ALICE_LINE.id), (0, _historyEvent.shapeRemoveEvent)(_testHistorySpec.BOB_LINE.id)]))]; var removedShapeState = evs.reduce(_editorStateReducer3.default, INITIAL_STATE); var editorActionsQueue = removedShapeState.editorActionsQueue; t.deepEqual(editorActionsQueue, expectedQueue); t.end(); }); // moving shapes (0, _tap.test)('shapes : moving selected', function (t) { var _expectedShapesData; var shapes = [_testHistorySpec.ALICE_LINE.id, _testHistorySpec.BOB_LINE.id]; var dx = 8, dy = -8; var evs = [(0, _editorEvents.setMode)((0, _modes.modeSelected)(shapes)), (0, _editorEvents.moveSelectedShapes)(dx, dy)]; var expectedShapesData = (_expectedShapesData = {}, _defineProperty(_expectedShapesData, _testHistorySpec.ALICE_LINE.id, _extends({}, _testHistorySpec.ALICE_LINE, { keyPoints: _testHistorySpec.ALICE_LINE.keyPoints.map(function (_ref) { var x = _ref.x; var y = _ref.y; return { x: x + dx, y: y + dy }; }) })), _defineProperty(_expectedShapesData, _testHistorySpec.BOB_LINE.id, _extends({}, _testHistorySpec.BOB_LINE, { keyPoints: _testHistorySpec.BOB_LINE.keyPoints.map(function (_ref2) { var x = _ref2.x; var y = _ref2.y; return { x: x + dx, y: y + dy }; }) })), _expectedShapesData); var expectedQueue = [(0, _editorAction.pushHistoryEventAction)((0, _historyEvent.historyEventsGroup)(shapes.map(function (shapeId) { return (0, _historyEvent.shapeUpdateEvent)(shapeId, expectedShapesData[shapeId]); })))]; var movedShapesState = evs.reduce(_editorStateReducer3.default, INITIAL_STATE); t.deepEqual(movedShapesState.editorActionsQueue, expectedQueue); t.end(); }); // test single-event shapes order change var testSingleShapesOrderEvent = function testSingleShapesOrderEvent(_ref3) { var initialState = _ref3.initialState; var expectedOrder = _ref3.expectedOrder; var ev = _ref3.ev; var t = _ref3.t; var _editorStateReducer = (0, _editorStateReducer3.default)(initialState, ev); var editorActionsQueue = _editorStateReducer.editorActionsQueue; t.assert(editorActionsQueue.length === 1); var editorAction = editorActionsQueue[0]; t.assert((0, _editorAction.isPushHistoryEventAction)(editorAction)); var historyEvent = editorAction.payload.ev; var gotScene = (0, _historyReducer.reducer)(INITIAL_STATE.scene, historyEvent); t.deepEqual(gotScene.shapesOrder, expectedOrder); }; // shapesOrder: [ aliceLine, bobLine, eveLine ] var initialState = _testHistorySpec.ALICE_BOB_EVE_LINES_EDITOR_STATE; (0, _tap.test)('shapes : sending one backward', function (t) { var ev = (0, _editorEvents.sendShapesBackward)([_testHistorySpec.BOB_LINE_ID]); var expectedOrder = [_testHistorySpec.BOB_LINE_ID, _testHistorySpec.ALICE_LINE_ID, _testHistorySpec.EVE_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); }); (0, _tap.test)('shapes : sending many backward', function (t) { var ev = (0, _editorEvents.sendShapesBackward)([_testHistorySpec.BOB_LINE_ID, _testHistorySpec.EVE_LINE_ID]); var expectedOrder = [_testHistorySpec.BOB_LINE_ID, _testHistorySpec.EVE_LINE_ID, _testHistorySpec.ALICE_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); }); (0, _tap.test)('shapes : sending one forward', function (t) { var ev = (0, _editorEvents.sendShapesForward)([_testHistorySpec.BOB_LINE_ID]); var expectedOrder = [_testHistorySpec.ALICE_LINE_ID, _testHistorySpec.EVE_LINE_ID, _testHistorySpec.BOB_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); }); (0, _tap.test)('shapes : sending many forward', function (t) { var ev = (0, _editorEvents.sendShapesForward)([_testHistorySpec.ALICE_LINE_ID, _testHistorySpec.BOB_LINE_ID]); var expectedOrder = [_testHistorySpec.EVE_LINE_ID, _testHistorySpec.ALICE_LINE_ID, _testHistorySpec.BOB_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); }); (0, _tap.test)('shapes : sending one to back', function (t) { var ev = (0, _editorEvents.sendShapesToBack)([_testHistorySpec.EVE_LINE_ID]); var expectedOrder = [_testHistorySpec.EVE_LINE_ID, _testHistorySpec.ALICE_LINE_ID, _testHistorySpec.BOB_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); }); (0, _tap.test)('shapes : sending many to back', function (t) { var ev = (0, _editorEvents.sendShapesToBack)([_testHistorySpec.BOB_LINE_ID, _testHistorySpec.EVE_LINE_ID]); var expectedOrder = [_testHistorySpec.BOB_LINE_ID, _testHistorySpec.EVE_LINE_ID, _testHistorySpec.ALICE_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); }); (0, _tap.test)('shapes : sending one to front', function (t) { var ev = (0, _editorEvents.sendShapesToFront)([_testHistorySpec.BOB_LINE_ID]); var expectedOrder = [_testHistorySpec.ALICE_LINE_ID, _testHistorySpec.EVE_LINE_ID, _testHistorySpec.BOB_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); }); (0, _tap.test)('shapes : sending many to front', function (t) { var ev = (0, _editorEvents.sendShapesToFront)([_testHistorySpec.ALICE_LINE_ID, _testHistorySpec.EVE_LINE_ID]); var expectedOrder = [_testHistorySpec.BOB_LINE_ID, _testHistorySpec.ALICE_LINE_ID, _testHistorySpec.EVE_LINE_ID]; testSingleShapesOrderEvent({ initialState: initialState, expectedOrder: expectedOrder, ev: ev, t: t }); t.end(); });