73 lines
2.1 KiB
TypeScript
73 lines
2.1 KiB
TypeScript
|
import { getShapeUtils } from 'state/shape-utils'
|
||
|
import { getCommonBounds } from 'utils'
|
||
|
import TestState, { arrowId, rectangleId } from './test-utils'
|
||
|
|
||
|
describe('selection', () => {
|
||
|
const tt = new TestState()
|
||
|
|
||
|
it('measures correct bounds for selected item', () => {
|
||
|
// Note: Each item should test its own bounds in its ./shapes/[shape].tsx file
|
||
|
|
||
|
const shape = tt.getShape(rectangleId)
|
||
|
|
||
|
tt.deselectAll().clickShape(rectangleId)
|
||
|
|
||
|
expect(tt.state.values.selectedBounds).toStrictEqual(
|
||
|
getShapeUtils(shape).getBounds(shape)
|
||
|
)
|
||
|
})
|
||
|
|
||
|
it('measures correct bounds for rotated selected item', () => {
|
||
|
const shape = tt.getShape(rectangleId)
|
||
|
|
||
|
getShapeUtils(shape).rotateBy(shape, Math.PI * 2 * Math.random())
|
||
|
|
||
|
tt.deselectAll().clickShape(rectangleId)
|
||
|
|
||
|
expect(tt.state.values.selectedBounds).toStrictEqual(
|
||
|
getShapeUtils(shape).getBounds(shape)
|
||
|
)
|
||
|
|
||
|
getShapeUtils(shape).rotateBy(shape, -Math.PI * 2 * Math.random())
|
||
|
|
||
|
expect(tt.state.values.selectedBounds).toStrictEqual(
|
||
|
getShapeUtils(shape).getBounds(shape)
|
||
|
)
|
||
|
})
|
||
|
|
||
|
it('measures correct bounds for selected items', () => {
|
||
|
const shape1 = tt.getShape(rectangleId)
|
||
|
const shape2 = tt.getShape(arrowId)
|
||
|
|
||
|
tt.deselectAll()
|
||
|
.clickShape(shape1.id)
|
||
|
.clickShape(shape2.id, { shiftKey: true })
|
||
|
|
||
|
expect(tt.state.values.selectedBounds).toStrictEqual(
|
||
|
getCommonBounds(
|
||
|
getShapeUtils(shape1).getRotatedBounds(shape1),
|
||
|
getShapeUtils(shape2).getRotatedBounds(shape2)
|
||
|
)
|
||
|
)
|
||
|
})
|
||
|
|
||
|
it('measures correct bounds for rotated selected items', () => {
|
||
|
const shape1 = tt.getShape(rectangleId)
|
||
|
const shape2 = tt.getShape(arrowId)
|
||
|
|
||
|
getShapeUtils(shape1).rotateBy(shape1, Math.PI * 2 * Math.random())
|
||
|
getShapeUtils(shape2).rotateBy(shape2, Math.PI * 2 * Math.random())
|
||
|
|
||
|
tt.deselectAll()
|
||
|
.clickShape(shape1.id)
|
||
|
.clickShape(shape2.id, { shiftKey: true })
|
||
|
|
||
|
expect(tt.state.values.selectedBounds).toStrictEqual(
|
||
|
getCommonBounds(
|
||
|
getShapeUtils(shape1).getRotatedBounds(shape1),
|
||
|
getShapeUtils(shape2).getRotatedBounds(shape2)
|
||
|
)
|
||
|
)
|
||
|
})
|
||
|
})
|