Files
2026-06-30 15:07:31 +08:00

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);
});
});