← Public packages
@kentcdodds/audible
Personal Audible library app — browser re-auth, library, wishlist, NAS archive stub.
src/__tests__/archive-remaining.test.ts
55 lines · 1.4 KB · TypeScriptimport assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import {
filterNotOnNas,
isDownloadable,
} from '../archive-remaining-helpers.ts'
import type { SlimLibraryItem } from '../types.ts'
describe('archive-remaining helpers', () => {
it('isDownloadable requires asin, title, and downloadable eligibility', () => {
const base: SlimLibraryItem = {
asin: 'B002UZKI96',
title: 'Hatchet',
archiveEligibility: 'downloadable',
}
assert.equal(isDownloadable(base), true)
assert.equal(
isDownloadable({ ...base, archiveEligibility: 'plus_stream' }),
false,
)
assert.equal(
isDownloadable({ ...base, archiveEligibility: 'unsupported_format' }),
false,
)
assert.equal(isDownloadable({ ...base, title: ' ' }), false)
assert.equal(isDownloadable({ ...base, asin: '' }), false)
assert.equal(
isDownloadable({
asin: 'B1',
title: 'Untitled default',
}),
true,
)
})
it('filterNotOnNas drops on-NAS titles and blank titles', () => {
const onNas = new Map<string, boolean>([
['A', true],
['B', false],
])
const remaining = filterNotOnNas(
[
{ asin: 'A', title: 'Already' },
{ asin: 'B', title: 'Needed' },
{ asin: 'C', title: 'Unknown treated as remaining' },
{ asin: 'D', title: ' ' },
],
onNas,
)
assert.deepEqual(remaining, [
{ asin: 'B', title: 'Needed' },
{ asin: 'C', title: 'Unknown treated as remaining' },
])
})
})