Files
ihaleist/tests/shared-store-recovery.test.mjs
T

25 lines
1.3 KiB
JavaScript

import {test} from 'node:test';
import assert from 'node:assert/strict';
import {mkdtempSync,writeFileSync,rmSync,existsSync} from 'node:fs';
import {tmpdir} from 'node:os';
import {join} from 'node:path';
import {execFileSync} from 'node:child_process';
test('failed shared-store initialization is retryable after storage is repaired',()=>{
const dir=mkdtempSync(join(tmpdir(),'ihaleist-shared-recovery-'));
try {
writeFileSync(join(dir,'kalem.sqlite'),'not a sqlite database');
execFileSync(process.execPath,['--input-type=module','-e',`
import assert from 'node:assert/strict';
import {rmSync} from 'node:fs';
import {join} from 'node:path';
const store=await import('./server/kalem-store.mjs');
assert.throws(()=>store.kalemOku('2026/123'));
rmSync(join(process.env.IHALEIST_SHARED_DATA_DIR,'kalem.sqlite'));
assert.deepEqual(store.kalemOku('2026/123'),{kalemler:[],kaynak:null});
assert.equal(store.kalemYaz('2026/123',[{ad:'QA tüp',miktar:2,birim:'adet'}]),1);
assert.equal(store.kalemOku('2026/123').kalemler[0].ad,'QA tüp');
`],{cwd:new URL('..',import.meta.url),env:{...process.env,IHALEIST_SHARED_DATA_DIR:dir},stdio:'pipe'});
assert.equal(existsSync(join(dir,'kalem.sqlite')),true);
} finally {rmSync(dir,{recursive:true,force:true});}
});