8274c6bc4f
This also closes #3431.
59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { describe, it, expect, beforeEach } from 'vitest';
|
|
import { WebAppService } from '@/services/webAppService';
|
|
import { fsTests } from './suites/fs-tests';
|
|
import { libraryTests } from './suites/library-tests';
|
|
|
|
/** Clear all records from the IndexedDB object store without deleting the database. */
|
|
async function clearStore() {
|
|
return new Promise<void>((resolve, reject) => {
|
|
const request = indexedDB.open('AppFileSystem', 1);
|
|
request.onupgradeneeded = () => {
|
|
const db = request.result;
|
|
if (!db.objectStoreNames.contains('files')) {
|
|
db.createObjectStore('files', { keyPath: 'path' });
|
|
}
|
|
};
|
|
request.onsuccess = () => {
|
|
const db = request.result;
|
|
const tx = db.transaction('files', 'readwrite');
|
|
tx.objectStore('files').clear();
|
|
tx.oncomplete = () => {
|
|
db.close();
|
|
resolve();
|
|
};
|
|
tx.onerror = () => {
|
|
db.close();
|
|
reject(tx.error);
|
|
};
|
|
};
|
|
request.onerror = () => reject(request.error);
|
|
});
|
|
}
|
|
|
|
describe('WebAppService', () => {
|
|
let service: WebAppService;
|
|
|
|
beforeEach(async () => {
|
|
await clearStore();
|
|
service = new WebAppService();
|
|
await service.init();
|
|
});
|
|
|
|
it('should resolve file paths with base prefix', async () => {
|
|
const resolved = await service.resolveFilePath('test.json', 'Books');
|
|
expect(resolved).toBe('Readest/Books/test.json');
|
|
});
|
|
|
|
it('should resolve empty Data path to prefix', async () => {
|
|
const resolved = await service.resolveFilePath('', 'Data');
|
|
expect(resolved).toBe('Readest');
|
|
});
|
|
|
|
it('should set localBooksDir after init', () => {
|
|
expect(service.localBooksDir).toBe('Readest/Books');
|
|
});
|
|
|
|
fsTests(() => service);
|
|
libraryTests(() => service);
|
|
});
|