37 lines
2.6 KiB
JavaScript
37 lines
2.6 KiB
JavaScript
import test,{after} from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {mkdtempSync,rmSync,statSync} from 'node:fs';
|
|
import {tmpdir} from 'node:os';
|
|
import {join} from 'node:path';
|
|
const dir=mkdtempSync(join(tmpdir(),'ihaleist-subscriptions-'));process.env.IHALEIST_USER_DATA_DIR=dir;
|
|
const subscriptions=await import('../server/notify-store.mjs');
|
|
after(()=>rmSync(dir,{recursive:true,force:true}));
|
|
test('subscription writes validate criteria and deletion is account scoped in the configured volume',()=>{
|
|
for(const criteria of [[],{konular:'lab'},{konular:[{}]},{kurumlar:['']},{sehir:[]}])assert.throws(()=>subscriptions.subscribe('owner',criteria),/Geçersiz/);
|
|
assert.deepEqual(subscriptions.list('owner'),[]);
|
|
const rows=subscriptions.subscribe('owner',{konular:['Laboratuvar'],sehir:'Ankara'});
|
|
assert.equal(rows.length,1);assert.deepEqual(rows[0].konular,['Laboratuvar']);
|
|
assert.deepEqual(subscriptions.list('other'),[]);assert.equal(subscriptions.remove(rows[0].id,'other'),false);
|
|
assert.equal(subscriptions.list('owner').length,1);
|
|
assert.equal(statSync(join(dir,'notify.sqlite')).mode&0o777,0o600);
|
|
assert.equal(subscriptions.remove(rows[0].id,'owner'),true);assert.deepEqual(subscriptions.list('owner'),[]);
|
|
});
|
|
|
|
test('distinct topic and institution sets coexist while equivalent subscriptions retain delivery history',()=>{
|
|
const one=subscriptions.subscribe('sets',{konular:['Laboratuvar','TEST'],kurumlar:['Hastane A']})[0];
|
|
subscriptions.markSent(one.id,['tender-1']);
|
|
subscriptions.subscribe('sets',{konular:['test',' laboratuvar '],kurumlar:['hastane a','Hastane A']});
|
|
let rows=subscriptions.list('sets');assert.equal(rows.length,1);assert.equal(rows[0].id,one.id);assert.deepEqual(rows[0].sonGorulenler,['tender-1']);
|
|
subscriptions.subscribe('sets',{konular:['Cihaz'],kurumlar:['Hastane A']});
|
|
subscriptions.subscribe('sets',{konular:['Laboratuvar','TEST'],kurumlar:['Hastane B']});
|
|
rows=subscriptions.list('sets');assert.equal(rows.length,3);assert.equal(rows.find(row=>row.id===one.id).sonGorulenler[0],'tender-1');
|
|
});
|
|
|
|
test('baseline does not claim delivery and seen history is not truncated at 400',()=>{
|
|
const row=subscriptions.subscribe('history',{konular:['Laboratuvar']})[0];
|
|
subscriptions.markBaseline(row.id,Array.from({length:450},(_,i)=>'old-'+i));
|
|
let saved=subscriptions.list('history')[0];assert.equal(saved.initialized,true);assert.equal(saved.sonGonderim,null);assert.equal(saved.sonGorulenler.length,450);
|
|
subscriptions.markSent(row.id,['new-1','old-1']);saved=subscriptions.list('history')[0];
|
|
assert.equal(saved.sonGorulenler.length,451);assert.ok(saved.sonGonderim);assert.ok(saved.sonGorulenler.includes('old-0'));
|
|
});
|