| 12345678910111213141516171819 |
- import {test} from 'node:test';import assert from 'node:assert/strict';import {PGlite} from '@electric-sql/pglite';import {readFileSync,existsSync} from 'node:fs';
- const file=new URL('../sql/read-revisions.sql',import.meta.url);
- test('revisions follow insert/update/delete/tenant moves and rollback across all source writers',async()=>{
- assert.ok(existsSync(file),'revision migration exists');const db=new PGlite();
- try{
- await db.exec('CREATE TABLE "LessonRecord"(company text,id int);CREATE TABLE "_User"(company text,id int);');
- await db.exec(readFileSync(file,'utf8'));
- const version=async co=>(await db.query('SELECT xs_read_version($1,$2) v',[co,'lessons'])).rows[0].v;
- const initial=await version('a');await db.exec("INSERT INTO \"LessonRecord\" VALUES('a',1),('a',2)");assert.notEqual(await version('a'),initial);
- const before=await version('a');await db.exec("BEGIN;UPDATE \"LessonRecord\" SET id=3;ROLLBACK");assert.equal(await version('a'),before);
- await db.exec("UPDATE \"LessonRecord\" SET company='b' WHERE id=1");assert.notEqual(await version('a'),before);assert.notEqual(await version('b'),'0');
- const b=await version('b');await db.exec("DELETE FROM \"LessonRecord\" WHERE company='b'");assert.notEqual(await version('b'),b);
- const a=await version('a');await db.exec("UPDATE \"_User\" SET id=2");assert.equal(await version('a'),a);
- await db.exec("INSERT INTO \"_User\" VALUES('a',10)");assert.notEqual(await version('a'),a);
- const last=await version('a');await db.exec('TRUNCATE "LessonRecord"');assert.notEqual(await version('a'),last);
- const stable=await version('a');await db.exec('SELECT xs_prune_read_revisions()');assert.equal(await version('a'),stable);
- await db.exec(readFileSync(file,'utf8'));assert.equal(typeof await version('a'),'string');
- }finally{await db.close();}
- });
|