Files
ihaleist/tests/notification-store.test.mjs

25 lines
1.7 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {execFileSync} from 'node:child_process';
import {mkdtempSync,rmSync,existsSync,statSync} from 'node:fs';
import {tmpdir} from 'node:os';
import {join} from 'node:path';
const url=new URL('../server/zeyilname.mjs',import.meta.url).href;
test('notifications live in configured user volume, persist, and scope read acknowledgements to owner',()=>{
const dir=mkdtempSync(join(tmpdir(),'ihaleist-notifications-'));
const run=code=>JSON.parse(execFileSync(process.execPath,['--input-type=module','-e',`const notifications=await import(${JSON.stringify(url)});${code}`],{
env:{...process.env,IHALEIST_USER_DATA_DIR:dir,IHALEIST_SHARED_DATA_DIR:join(dir,'shared')},encoding:'utf8',timeout:10000,stdio:['ignore','pipe','pipe']
}));
try {
const initial=run(`
const id=notifications.bildirimYaz({email:'owner',tur:'zeyilname',ikn:'2026/1',baslik:'Tarih değişti',metin:'10 Eylül → 12 Eylül'});
const foreign=notifications.okunduIsaretle('other',[id]);
console.log(JSON.stringify({id,foreign,owner:notifications.bildirimleriOku('owner'),other:notifications.bildirimleriOku('other')}));
`);
assert.equal(initial.foreign,0);assert.deepEqual(initial.other,[]);assert.equal(initial.owner[0].okundu,0);
assert.ok(existsSync(join(dir,'takip.sqlite')));assert.equal(statSync(join(dir,'takip.sqlite')).mode&0o777,0o600);
const next=run(`const changed=notifications.okunduIsaretle('owner',[${JSON.stringify(initial.id)}]);console.log(JSON.stringify({changed,rows:notifications.bildirimleriOku('owner')}));`);
assert.equal(next.changed,1);assert.equal(next.rows[0].okundu,1);assert.equal(next.rows[0].metin,'10 Eylül → 12 Eylül');
}finally {rmSync(dir,{recursive:true,force:true});}
});