25 lines
1.3 KiB
JavaScript
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});}
|
|
});
|