UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

84 lines (67 loc) 2.65 kB
import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { BrowserDB } from '../../core/db'; import { DB_File } from '../../schemas/files'; import { FileModel } from '../file'; // Assuming LocalDB is already mocked or using an in-memory database // and LocalFileSchema has been imported correctly. describe('_FileModel', () => { let fileData: DB_File; beforeEach(() => { // Set up file data with the correct structure according to LocalFileSchema fileData = { data: new ArrayBuffer(10), fileType: 'image/png', name: 'test.png', saveMode: 'local', size: 10, // url is optional, only needed if saveMode is 'url' }; }); afterEach(async () => { // Clean up the database after each test const db = new BrowserDB(); await db.files.clear(); db.close(); }); it('should create a file record', async () => { // First, create a file to test the create method const fileData: DB_File = { data: new ArrayBuffer(10), fileType: 'image/png', name: 'test.png', saveMode: 'local', size: 10, }; const result = await FileModel.create(fileData); expect(result).toHaveProperty('id'); expect(result.id).toMatch(/^file-/); // Verify that the file has been added to the database const fileInDb = await FileModel.findById(result.id); expect(fileInDb).toEqual(expect.objectContaining(fileData)); }); it('should find a file by id', async () => { // First, create a file to test the findById method const createdFile = await FileModel.create(fileData); const foundFile = await FileModel.findById(createdFile.id); expect(foundFile).toEqual(expect.objectContaining(fileData)); }); it('should delete a file by id', async () => { // First, create a file to test the delete method const createdFile = await FileModel.create(fileData); await FileModel.delete(createdFile.id); // Verify that the file has been removed from the database const fileInDb = await FileModel.findById(createdFile.id); expect(fileInDb).toBeUndefined(); }); it('should clear all files', async () => { // First, create a file to test the delete method const createdFile = await FileModel.create(fileData); const createdFile2 = await FileModel.create(fileData); await FileModel.clear(); // Verify that the file has been removed from the database const fileInDb = await FileModel.findById(createdFile.id); expect(fileInDb).toBeUndefined(); const fileInDb2 = await FileModel.findById(createdFile2.id); expect(fileInDb2).toBeUndefined(); }); });