41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
const { describe, it } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const Database = require('better-sqlite3');
|
|
const imageClient = require('../src/services/imageClient');
|
|
|
|
function makeDb() {
|
|
const db = new Database(':memory:');
|
|
db.exec(`CREATE TABLE image_proxy_cache (
|
|
cache_key TEXT PRIMARY KEY,
|
|
proxy_url TEXT NOT NULL,
|
|
created_at TEXT NOT NULL
|
|
)`);
|
|
return db;
|
|
}
|
|
|
|
describe('image_proxy_cache', () => {
|
|
it('getProxyCache returns null when entry expired by expire_hours', () => {
|
|
const db = makeDb();
|
|
const old = new Date(Date.now() - 25 * 3600 * 1000).toISOString();
|
|
db.prepare(
|
|
'INSERT INTO image_proxy_cache (cache_key, proxy_url, created_at) VALUES (?, ?, ?)'
|
|
).run('scenes/test.jpg', 'https://example.com/a.jpg', old);
|
|
|
|
assert.equal(imageClient.getProxyCache(db, 'scenes/test.jpg'), null);
|
|
assert.equal(db.prepare('SELECT COUNT(*) AS c FROM image_proxy_cache').get().c, 0);
|
|
});
|
|
|
|
it('getProxyCache returns url when entry still fresh', () => {
|
|
const db = makeDb();
|
|
imageClient.setProxyCache(db, 'scenes/fresh.jpg', 'https://example.com/fresh.jpg');
|
|
assert.equal(imageClient.getProxyCache(db, 'scenes/fresh.jpg'), 'https://example.com/fresh.jpg');
|
|
});
|
|
|
|
it('deleteProxyCache removes row', () => {
|
|
const db = makeDb();
|
|
imageClient.setProxyCache(db, 'k1', 'https://example.com/x.jpg');
|
|
imageClient.deleteProxyCache(db, 'k1');
|
|
assert.equal(imageClient.getProxyCache(db, 'k1'), null);
|
|
});
|
|
});
|