UI-13b already made A1 the durable document, but phase-state still expected the UI-06 marker. Record successful saves as the latest snippet, ignore conflict drafts, and write that final value at UI-15-pre without relaxing the restore assertion. Co-authored-by: Cursor <cursoragent@cursor.com>
34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
import { describe, it } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { nextDurableBodySnippet, requireDurableSnippet } from './durableBodySnippet';
|
|
|
|
describe('durableBodySnippet', () => {
|
|
it('rejects empty persisted snippets', () => {
|
|
assert.throws(() => requireDurableSnippet(' '), /empty_durable_body_snippet/);
|
|
assert.throws(
|
|
() => nextDurableBodySnippet('UI06-old', { kind: 'persisted', snippet: ' ' }),
|
|
/empty_durable_body_snippet/,
|
|
);
|
|
});
|
|
|
|
it('lets a later successful revision replace the old snippet', () => {
|
|
const afterUi06 = nextDurableBodySnippet(undefined, { kind: 'persisted', snippet: ' UI06-mu0eq020 ' });
|
|
assert.equal(afterUi06, 'UI06-mu0eq020');
|
|
const afterA1 = nextDurableBodySnippet(afterUi06, { kind: 'persisted', snippet: 'A1-win-mu0eq020' });
|
|
assert.equal(afterA1, 'A1-win-mu0eq020');
|
|
assert.notEqual(afterA1, afterUi06);
|
|
});
|
|
|
|
it('does not promote a conflict-failed draft to the expected body', () => {
|
|
const afterUi06 = nextDurableBodySnippet(undefined, { kind: 'persisted', snippet: 'UI06-mu0eq020' });
|
|
const afterA1 = nextDurableBodySnippet(afterUi06, { kind: 'persisted', snippet: 'A1-win-mu0eq020' });
|
|
const afterA2Conflict = nextDurableBodySnippet(afterA1, {
|
|
kind: 'conflict_draft',
|
|
snippet: 'A2-conflict-mu0eq020',
|
|
});
|
|
assert.equal(afterA2Conflict, 'A1-win-mu0eq020');
|
|
assert.notEqual(afterA2Conflict, 'A2-conflict-mu0eq020');
|
|
assert.notEqual(afterA2Conflict, 'UI06-mu0eq020');
|
|
});
|
|
});
|