P2-01: add SQLite WASM OPFS project worker
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { test } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { createMockFacade } from '../src/facade/mockFacade'
|
||||
import { PROJECT_SCHEMA_MIGRATIONS, PROJECT_SCHEMA_SQL, PROJECT_SCHEMA_VERSION } from '../src/facade/projectSchema'
|
||||
|
||||
test('facade exposes a stable initial document projection', () => {
|
||||
const facade = createMockFacade()
|
||||
@@ -11,6 +12,13 @@ test('facade exposes a stable initial document projection', () => {
|
||||
assert.equal(facade.gui.workbench.getActive(), 'Part Design')
|
||||
})
|
||||
|
||||
test('project schema is versioned and covers the FreeCAD document graph', () => {
|
||||
assert.equal(PROJECT_SCHEMA_VERSION, 1)
|
||||
assert.equal(PROJECT_SCHEMA_MIGRATIONS[0].version, PROJECT_SCHEMA_VERSION)
|
||||
for (const table of ['projects', 'documents', 'objects', 'object_properties', 'dependencies', 'transactions', 'resources']) assert.match(PROJECT_SCHEMA_SQL, new RegExp(`CREATE TABLE IF NOT EXISTS ${table}`))
|
||||
assert.match(PROJECT_SCHEMA_SQL, /CREATE INDEX IF NOT EXISTS objects_document_ordinal/)
|
||||
})
|
||||
|
||||
test('workbench and selection changes are event driven', () => {
|
||||
const facade = createMockFacade()
|
||||
const events: string[] = []
|
||||
@@ -72,6 +80,15 @@ test('document mutations use the facade history boundary', () => {
|
||||
assert.equal(facade.app.document.getActive().label, 'Untitled document')
|
||||
})
|
||||
|
||||
test('project persistence remains behind the facade contract', async () => {
|
||||
const facade = createMockFacade()
|
||||
const saved = await facade.project.save()
|
||||
assert.equal(saved.documentId, 'doc-pump-housing')
|
||||
const loaded = await facade.project.load('doc-pump-housing')
|
||||
assert.equal(loaded?.label, 'Pump Housing')
|
||||
assert.equal(facade.project.capabilities().mode, 'sqlite-memory')
|
||||
})
|
||||
|
||||
test('Part Design feature tasks commit a document object and remain undoable', () => {
|
||||
const facade = createMockFacade()
|
||||
const before = facade.app.document.getActive()
|
||||
|
||||
Reference in New Issue
Block a user