fs-cache-fast/test/fscache.integration.test.mjs

108 lines
4 KiB
JavaScript
Raw Normal View History

import { Eltro as t, assert, spy } from 'eltro'
import { fileURLToPath } from 'url'
import fs from 'fs/promises'
import fsSync from 'fs'
import path from 'path'
import Cache from '../index.mjs'
const __dirname = path.dirname(fileURLToPath(import.meta.url));
let cache = new Cache({ cache_dir: path.join(__dirname, 'temp') })
t.before(function() {
return cache.clear()
})
t.test('get should work', async function() {
const testKey = 'get-test-one'
const testData = { a: 1 }
assert.deepStrictEqual(await cache.get(testKey, 'HELLO'), 'HELLO')
await fs.writeFile(cache.hash(testKey), cache._parseSetData(testKey, testData))
assert.deepStrictEqual(await cache.get(testKey, 'HELLO'), testData)
})
t.test('get should work with ttl', async function() {
const testKey = 'get-test-two'
const testData = { a: 1 }
assert.deepStrictEqual(await cache.get(testKey, 'HELLO'), 'HELLO')
await fs.writeFile(cache.hash(testKey), cache._parseSetData(testKey, testData, { ttl: 60 }))
assert.deepStrictEqual(await cache.get(testKey, 'HELLO'), testData)
})
t.test('get should return fallback with expired ttl', async function() {
const testKey = 'get-test-three'
const testData = { a: 1 }
assert.deepStrictEqual(await cache.get(testKey, 'HELLO'), 'HELLO')
await fs.writeFile(cache.hash(testKey), cache._parseSetData(testKey, testData, { ttl: -1 }))
assert.deepStrictEqual(await cache.get(testKey, 'HELLO'), 'HELLO')
})
t.test('getSync should work', function() {
const testKey = 'get-sync-test-one'
const testData = { b: 2 }
assert.deepStrictEqual(cache.getSync(testKey, 'HELLO'), 'HELLO')
fsSync.writeFileSync(cache.hash(testKey), cache._parseSetData(testKey, testData))
assert.deepStrictEqual(cache.getSync(testKey, 'HELLO'), testData)
})
t.test('getSync should work with ttl', function() {
const testKey = 'get-sync-test-two'
const testData = { b: 2 }
assert.deepStrictEqual(cache.getSync(testKey, 'HELLO'), 'HELLO')
fsSync.writeFileSync(cache.hash(testKey), cache._parseSetData(testKey, testData, { ttl: 60 }))
assert.deepStrictEqual(cache.getSync(testKey, 'HELLO'), testData)
})
t.test('getSync should return fallback with expired ttl', function() {
const testKey = 'get-sync-test-three'
const testData = { b: 2 }
assert.deepStrictEqual(cache.getSync(testKey, 'HELLO'), 'HELLO')
fsSync.writeFileSync(cache.hash(testKey), cache._parseSetData(testKey, testData, { ttl: -1 }))
assert.deepStrictEqual(cache.getSync(testKey, 'HELLO'), 'HELLO')
})
t.test('set should work', async function() {
const testKey = 'set-test-one'
const assertPath = cache.hash(testKey)
assert.notOk(fsSync.existsSync(assertPath))
await cache.set(testKey, { c: 3 })
assert.ok(fsSync.existsSync(assertPath))
let content = await fs.readFile(assertPath, { encoding: 'utf8' })
assert.strictEqual(content, cache._parseSetData(testKey, { c: 3 }))
})
t.test('set should work', function() {
const testKey = 'set-sync-test-one'
const assertPath = cache.hash(testKey)
assert.notOk(fsSync.existsSync(assertPath))
cache.setSync(testKey, { d: 4 })
assert.ok(fsSync.existsSync(assertPath))
let content = fsSync.readFileSync(assertPath, { encoding: 'utf8' })
assert.strictEqual(content, cache._parseSetData(testKey, { d: 4 }))
})
t.test('should all work together', async function() {
const testKey = 'hello world'
const assertFallback = 'This is fallback'
const assertPath = cache.hash(testKey)
assert.notOk(fsSync.existsSync(assertPath))
assert.strictEqual(await cache.get(testKey, assertFallback), assertFallback)
await cache.set(testKey, { e: 5 })
assert.notStrictEqual(await cache.get(testKey, assertFallback), assertFallback)
assert.deepStrictEqual(await cache.get(testKey), { e: 5 })
assert.notStrictEqual(cache.getSync(testKey, assertFallback), assertFallback)
assert.deepStrictEqual(cache.getSync(testKey), { e: 5 })
cache.setSync(testKey, { f: 6 })
assert.deepStrictEqual(await cache.get(testKey), { f: 6 })
assert.deepStrictEqual(cache.getSync(testKey), { f: 6 })
})