feat: persist direct edits with revision rebase
This commit is contained in:
@@ -6,7 +6,7 @@ const os = require('os');
|
||||
const path = require('path');
|
||||
const { compileInput } = require('../src/compile/compiler');
|
||||
const { ensureRevisionStore } = require('../src/compile/road-revisions');
|
||||
const { editState, editPreview } = require('../workbench/server');
|
||||
const { editPreview, editState, rebaseEdits, saveEdits } = require('../workbench/server');
|
||||
|
||||
const workspace = fs.mkdtempSync(path.join(os.tmpdir(), 'workbench-edit-api-'));
|
||||
const input = {
|
||||
@@ -57,5 +57,20 @@ for (const tracked of trackedFiles) {
|
||||
assert.equal(fs.statSync(tracked.file).mtimeMs, tracked.mtimeMs, `${tracked.file} mtime unchanged by preview`);
|
||||
}
|
||||
|
||||
const saved = saveEdits(area, { expectedDocumentVersion: 0, document: state.document });
|
||||
assert.equal(saved.documentVersion, 1);
|
||||
const beforeConflict = fs.readFileSync(initialized.paths.activeEdits);
|
||||
assert.throws(
|
||||
() => saveEdits(area, { expectedDocumentVersion: 0, document: state.document }),
|
||||
(error) => error.statusCode === 409 && error.current.documentVersion === 1,
|
||||
);
|
||||
assert.deepEqual(fs.readFileSync(initialized.paths.activeEdits), beforeConflict, '409 does not write the document');
|
||||
|
||||
const checkpoint = require('../src/compile/road-revisions').createCheckpoint(workspace, 'Preview checkpoint');
|
||||
assert.equal(checkpoint.manifest.id, 'rev-0002');
|
||||
const rebased = rebaseEdits(area, checkpoint.manifest.id);
|
||||
assert.equal(rebased.counts.exact, 0);
|
||||
assert.deepEqual(rebased.constraints, []);
|
||||
|
||||
fs.rmSync(workspace, { recursive: true, force: true });
|
||||
console.log('workbench edit API tests passed');
|
||||
|
||||
Reference in New Issue
Block a user