You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

delete.command.spec.ts 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { TLDR } from '~state/tldr'
  2. import { TLDrawState } from '~state'
  3. import { mockDocument } from '~test-utils'
  4. import type { TLDrawShape } from '~types'
  5. describe('Delete command', () => {
  6. const tlstate = new TLDrawState()
  7. it('does, undoes and redoes command', () => {
  8. tlstate.loadDocument(mockDocument)
  9. tlstate.select('rect2')
  10. tlstate.delete()
  11. expect(tlstate.getShape('rect2')).toBe(undefined)
  12. expect(tlstate.getPageState().selectedIds.length).toBe(0)
  13. tlstate.undo()
  14. expect(tlstate.getShape('rect2')).toBeTruthy()
  15. expect(tlstate.getPageState().selectedIds.length).toBe(1)
  16. tlstate.redo()
  17. expect(tlstate.getShape('rect2')).toBe(undefined)
  18. expect(tlstate.getPageState().selectedIds.length).toBe(0)
  19. })
  20. it('deletes two shapes', () => {
  21. tlstate.loadDocument(mockDocument)
  22. tlstate.selectAll()
  23. tlstate.delete()
  24. expect(tlstate.getShape('rect1')).toBe(undefined)
  25. expect(tlstate.getShape('rect2')).toBe(undefined)
  26. tlstate.undo()
  27. expect(tlstate.getShape('rect1')).toBeTruthy()
  28. expect(tlstate.getShape('rect2')).toBeTruthy()
  29. tlstate.redo()
  30. expect(tlstate.getShape('rect1')).toBe(undefined)
  31. expect(tlstate.getShape('rect2')).toBe(undefined)
  32. })
  33. it('deletes bound shapes', () => {
  34. tlstate.loadDocument(mockDocument)
  35. expect(Object.values(tlstate.page.bindings)[0]).toBe(undefined)
  36. tlstate
  37. .deselectAll()
  38. .create(
  39. TLDR.getShapeUtils({ type: 'arrow' } as TLDrawShape).create({
  40. id: 'arrow1',
  41. parentId: 'page1',
  42. })
  43. )
  44. .select('arrow1')
  45. .startHandleSession([0, 0], 'start')
  46. .updateHandleSession([110, 110])
  47. .completeSession()
  48. const binding = Object.values(tlstate.page.bindings)[0]
  49. expect(binding).toBeTruthy()
  50. expect(binding.fromId).toBe('arrow1')
  51. expect(binding.toId).toBe('rect3')
  52. expect(binding.handleId).toBe('start')
  53. expect(tlstate.getShape('arrow1').handles?.start.bindingId).toBe(binding.id)
  54. tlstate.select('rect3').delete()
  55. expect(Object.values(tlstate.page.bindings)[0]).toBe(undefined)
  56. expect(tlstate.getShape('arrow1').handles?.start.bindingId).toBe(undefined)
  57. tlstate.undo()
  58. expect(Object.values(tlstate.page.bindings)[0]).toBeTruthy()
  59. expect(tlstate.getShape('arrow1').handles?.start.bindingId).toBe(binding.id)
  60. tlstate.redo()
  61. expect(Object.values(tlstate.page.bindings)[0]).toBe(undefined)
  62. expect(tlstate.getShape('arrow1').handles?.start.bindingId).toBe(undefined)
  63. })
  64. })