151 lines
3.6 KiB
TypeScript
151 lines
3.6 KiB
TypeScript
import { ShapeType } from 'types'
|
|
import TestState from '../test-utils'
|
|
|
|
describe('group command', () => {
|
|
const tt = new TestState()
|
|
tt.resetDocumentState()
|
|
.createShape(
|
|
{
|
|
type: ShapeType.Rectangle,
|
|
point: [0, 0],
|
|
size: [100, 100],
|
|
childIndex: 1,
|
|
isLocked: false,
|
|
isHidden: false,
|
|
isAspectRatioLocked: false,
|
|
},
|
|
'rect1'
|
|
)
|
|
.createShape(
|
|
{
|
|
type: ShapeType.Rectangle,
|
|
point: [400, 0],
|
|
size: [100, 100],
|
|
childIndex: 2,
|
|
isHidden: false,
|
|
isLocked: false,
|
|
isAspectRatioLocked: false,
|
|
},
|
|
'rect2'
|
|
)
|
|
.save()
|
|
|
|
// it('deletes the group if it has only one child', () => {
|
|
// tt.restore()
|
|
// .clickShape('rect1')
|
|
// .clickShape('rect2', { shiftKey: true })
|
|
// .send('GROUPED')
|
|
|
|
// const groupId = tt.getShape('rect1').parentId
|
|
|
|
// expect(groupId === tt.data.currentPageId).toBe(false)
|
|
|
|
// tt.doubleClickShape('rect1')
|
|
|
|
// tt.send('DELETED')
|
|
|
|
// expect(tt.getShape(groupId)).toBe(undefined)
|
|
// expect(tt.getShape('rect2')).toBeTruthy()
|
|
// })
|
|
|
|
it('deletes the group if all children are deleted', () => {
|
|
tt.restore()
|
|
.clickShape('rect1')
|
|
.clickShape('rect2', { shiftKey: true })
|
|
.send('GROUPED')
|
|
|
|
const groupId = tt.getShape('rect1').parentId
|
|
|
|
expect(groupId === tt.data.currentPageId).toBe(false)
|
|
|
|
tt.doubleClickShape('rect1').clickShape('rect2', { shiftKey: true })
|
|
|
|
tt.send('DELETED')
|
|
|
|
expect(tt.getShape(groupId)).toBe(undefined)
|
|
})
|
|
|
|
it('creates a group', () => {
|
|
tt.restore()
|
|
.clickShape('rect1')
|
|
.clickShape('rect2', { shiftKey: true })
|
|
.send('GROUPED')
|
|
|
|
const groupId = tt.getShape('rect1').parentId
|
|
|
|
expect(groupId === tt.data.currentPageId).toBe(false)
|
|
})
|
|
|
|
it('selects the group on single click', () => {
|
|
tt.restore()
|
|
.clickShape('rect1')
|
|
.clickShape('rect2', { shiftKey: true })
|
|
.send('GROUPED')
|
|
.clickShape('rect1')
|
|
|
|
const groupId = tt.getShape('rect1').parentId
|
|
|
|
expect(tt.selectedIds).toEqual([groupId])
|
|
})
|
|
|
|
it('selects the item on double click', () => {
|
|
tt.restore()
|
|
.clickShape('rect1')
|
|
.clickShape('rect2', { shiftKey: true })
|
|
.send('GROUPED')
|
|
.doubleClickShape('rect1')
|
|
|
|
const groupId = tt.getShape('rect1').parentId
|
|
|
|
expect(tt.data.currentParentId).toBe(groupId)
|
|
|
|
expect(tt.selectedIds).toEqual(['rect1'])
|
|
})
|
|
|
|
it('resets currentPageId when clicking the canvas', () => {
|
|
tt.restore()
|
|
.clickShape('rect1')
|
|
.clickShape('rect2', { shiftKey: true })
|
|
.send('GROUPED')
|
|
.doubleClickShape('rect1')
|
|
.clickCanvas()
|
|
.clickShape('rect1')
|
|
|
|
const groupId = tt.getShape('rect1').parentId
|
|
|
|
expect(tt.data.currentParentId).toBe(tt.data.currentPageId)
|
|
|
|
expect(tt.selectedIds).toEqual([groupId])
|
|
})
|
|
|
|
it('creates a group and undoes and redoes', () => {
|
|
tt.restore()
|
|
.clickShape('rect1')
|
|
.clickShape('rect2', { shiftKey: true })
|
|
.send('GROUPED')
|
|
|
|
const groupId = tt.getShape('rect1').parentId
|
|
|
|
expect(groupId === tt.data.currentPageId).toBe(false)
|
|
|
|
tt.undo()
|
|
|
|
expect(tt.getShape('rect1').parentId === tt.data.currentPageId).toBe(true)
|
|
expect(tt.getShape(groupId)).toBe(undefined)
|
|
|
|
tt.redo()
|
|
|
|
expect(tt.getShape('rect1').parentId === tt.data.currentPageId).toBe(false)
|
|
expect(tt.getShape(groupId)).toBeTruthy()
|
|
})
|
|
|
|
it('groups shapes with different parents', () => {
|
|
// TODO
|
|
null
|
|
})
|
|
|
|
it('does not group a parent group shape and its child', () => {
|
|
// TODO
|
|
null
|
|
})
|
|
})
|