chat-ui / src /lib /server /api /__tests__ /testHelpers.ts
DreamyDetective's picture
added app details
ded72f6
import { ObjectId } from "mongodb";
import { collections } from "$lib/server/database";
import type { User } from "$lib/types/User";
import type { Session } from "$lib/types/Session";
import type { Conversation } from "$lib/types/Conversation";
export function createTestLocals(overrides?: Partial<App.Locals>): App.Locals {
return {
sessionId: "test-session-id",
isAdmin: false,
user: undefined,
token: undefined,
...overrides,
};
}
export async function createTestUser(): Promise<{
user: User;
session: Session;
locals: App.Locals;
}> {
const userId = new ObjectId();
const sessionId = `test-session-${userId.toString()}`;
const user: User = {
_id: userId,
createdAt: new Date(),
updatedAt: new Date(),
username: `user-${userId.toString().slice(0, 8)}`,
name: "Test User",
avatarUrl: "https://example.com/avatar.png",
hfUserId: `hf-${userId.toString()}`,
};
const session: Session = {
_id: new ObjectId(),
createdAt: new Date(),
updatedAt: new Date(),
userId,
sessionId,
expiresAt: new Date(Date.now() + 1000 * 60 * 60 * 24),
};
await collections.users.insertOne(user);
await collections.sessions.insertOne(session);
return {
user,
session,
locals: {
user,
sessionId,
isAdmin: false,
token: undefined,
},
};
}
export async function createTestConversation(
locals: App.Locals,
overrides?: Partial<Conversation>
): Promise<Conversation> {
const conv: Conversation = {
_id: new ObjectId(),
title: "Test Conversation",
model: "test-model",
messages: [],
createdAt: new Date(),
updatedAt: new Date(),
...(locals.user ? { userId: locals.user._id } : { sessionId: locals.sessionId }),
...overrides,
};
await collections.conversations.insertOne(conv);
return conv;
}
export async function cleanupTestData() {
await collections.conversations.deleteMany({});
await collections.abortedGenerations.deleteMany({});
await collections.users.deleteMany({});
await collections.sessions.deleteMany({});
await collections.settings.deleteMany({});
await collections.sharedConversations.deleteMany({});
await collections.reports.deleteMany({});
}