123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import { ShapeType } from 'types'
- import TestState, { rectangleId, arrowId } from '../test-utils'
-
- describe('delete command', () => {
- const tt = new TestState()
-
- describe('deleting single shapes', () => {
- it('deletes a shape and undoes the delete', () => {
- tt.deselectAll().clickShape(rectangleId).pressDelete()
-
- expect(tt.idsAreSelected([])).toBe(true)
-
- expect(tt.getShape(rectangleId)).toBe(undefined)
-
- tt.undo()
-
- expect(tt.getShape(rectangleId)).toBeTruthy()
- expect(tt.idsAreSelected([rectangleId])).toBe(true)
-
- tt.redo()
-
- expect(tt.getShape(rectangleId)).toBe(undefined)
- })
- })
-
- describe('deleting and restoring grouped shapes', () => {
- it('creates a group', () => {
- tt.reset()
- .deselectAll()
- .clickShape(rectangleId)
- .clickShape(arrowId, { shiftKey: true })
- .send('GROUPED')
-
- const group = tt.getOnlySelectedShape()
-
- // Should select the group
- expect(tt.assertShapeProps(group, { type: ShapeType.Group })).toBe(true)
-
- const arrow = tt.getShape(arrowId)
-
- // The arrow should be have the group as its parent
- expect(tt.assertShapeProps(arrow, { parentId: group.id })).toBe(true)
- })
-
- it('selects the new group', () => {
- const groupId = tt.getShape(arrowId).parentId
-
- expect(tt.idsAreSelected([groupId])).toBe(true)
- })
-
- it('assigns a new parent', () => {
- const groupId = tt.getShape(arrowId).parentId
-
- expect(groupId === tt.data.currentPageId).toBe(false)
- })
-
- // Rectangle has the same new parent?
- it('assigns new parent to all selected shapes', () => {
- const groupId = tt.getShape(arrowId).parentId
-
- expect(tt.hasParent(arrowId, groupId)).toBe(true)
- })
- })
-
- describe('selecting within the group', () => {
- it('selects the group when pointing a shape', () => {
- const groupId = tt.getShape(arrowId).parentId
-
- tt.deselectAll().clickShape(rectangleId)
-
- expect(tt.idsAreSelected([groupId])).toBe(true)
- })
-
- it('keeps selection when pointing group shape', () => {
- const groupId = tt.getShape(arrowId).parentId
-
- tt.deselectAll().clickShape(groupId)
-
- expect(tt.idsAreSelected([groupId])).toBe(true)
- })
-
- it('selects a grouped shape by double-pointing', () => {
- tt.deselectAll().doubleClickShape(rectangleId)
-
- expect(tt.idsAreSelected([rectangleId])).toBe(true)
- })
-
- it('selects a sibling on point after double-pointing into a grouped shape children', () => {
- tt.deselectAll().doubleClickShape(rectangleId).clickShape(arrowId)
-
- expect(tt.idsAreSelected([arrowId])).toBe(true)
- })
-
- it('rises up a selection level when escape is pressed', () => {
- const groupId = tt.getShape(arrowId).parentId
-
- tt.deselectAll().doubleClickShape(rectangleId).send('CANCELLED')
-
- tt.clickShape(rectangleId)
-
- expect(tt.idsAreSelected([groupId])).toBe(true)
- })
-
- // it('deletes and restores one shape', () => {
- // // Delete the rectangle first
- // state.send('UNDO')
-
- // expect(tld.getShape(tt.data, rectangleId)).toBeTruthy()
- // expect(tt.idsAreSelected([rectangleId])).toBe(true)
-
- // state.send('REDO')
-
- // expect(tld.getShape(tt.data, rectangleId)).toBe(undefined)
-
- // state.send('UNDO')
-
- // expect(tld.getShape(tt.data, rectangleId)).toBeTruthy()
- // expect(tt.idsAreSelected([rectangleId])).toBe(true)
- })
- })
|