49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
|
|
import { expect, test } from 'bun:test'
|
||
|
|
|
||
|
|
import { createEditor } from '@open-pencil/core/editor'
|
||
|
|
|
||
|
|
import { createDocumentChanges } from '@/app/document/io/changes'
|
||
|
|
|
||
|
|
test('repainting and selection do not dirty a document; content mutations do', () => {
|
||
|
|
const editor = createEditor()
|
||
|
|
const changes = createDocumentChanges(editor)
|
||
|
|
try {
|
||
|
|
editor.requestRender()
|
||
|
|
editor.requestRepaint()
|
||
|
|
editor.clearSelection()
|
||
|
|
expect(changes.hasUnsavedChanges()).toBe(false)
|
||
|
|
editor.createShape('RECTANGLE', 0, 0, 100, 100)
|
||
|
|
expect(changes.hasUnsavedChanges()).toBe(true)
|
||
|
|
changes.markSaved()
|
||
|
|
expect(changes.hasUnsavedChanges()).toBe(false)
|
||
|
|
editor.undo.record({
|
||
|
|
label: 'Variable edit',
|
||
|
|
forward: () => undefined,
|
||
|
|
inverse: () => undefined
|
||
|
|
})
|
||
|
|
expect(changes.hasUnsavedChanges()).toBe(true)
|
||
|
|
} finally {
|
||
|
|
changes.dispose()
|
||
|
|
editor.dispose()
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
test('saving an earlier revision cannot clear edits made while exporting or picking a file', () => {
|
||
|
|
const editor = createEditor()
|
||
|
|
const changes = createDocumentChanges(editor)
|
||
|
|
try {
|
||
|
|
editor.createShape('RECTANGLE', 0, 0, 100, 100)
|
||
|
|
const saving = changes.capture()
|
||
|
|
editor.createShape('ELLIPSE', 0, 0, 100, 100)
|
||
|
|
changes.markSaved(saving)
|
||
|
|
expect(changes.hasUnsavedChanges()).toBe(true)
|
||
|
|
changes.markSaved()
|
||
|
|
expect(changes.hasUnsavedChanges()).toBe(false)
|
||
|
|
changes.markChanged()
|
||
|
|
expect(changes.hasUnsavedChanges()).toBe(true)
|
||
|
|
} finally {
|
||
|
|
changes.dispose()
|
||
|
|
editor.dispose()
|
||
|
|
}
|
||
|
|
})
|