test: cover message query pagination
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
||||||
import {
|
import {
|
||||||
decodeCursor,
|
decodeCursor,
|
||||||
encodeCursor,
|
encodeCursor,
|
||||||
@@ -24,10 +24,41 @@ describe("message cursor helpers", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("listMessages integration tests", () => {
|
describe("message query integration tests", () => {
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
// Initialize database once for all tests
|
|
||||||
await initializeDatabase();
|
await initializeDatabase();
|
||||||
|
// Create tables using Drizzle schema (SQLite doesn't support migrations with PostgreSQL syntax)
|
||||||
|
const db = getDatabase() as any;
|
||||||
|
try {
|
||||||
|
// Create messages table
|
||||||
|
await db.run(`
|
||||||
|
CREATE TABLE IF NOT EXISTS "messages" (
|
||||||
|
"id" text PRIMARY KEY NOT NULL,
|
||||||
|
"guild_id" text NOT NULL,
|
||||||
|
"channel_id" text NOT NULL,
|
||||||
|
"thread_id" text,
|
||||||
|
"user_id" text NOT NULL,
|
||||||
|
"username" text NOT NULL,
|
||||||
|
"avatar_url" text,
|
||||||
|
"content" text NOT NULL,
|
||||||
|
"edited_content" text,
|
||||||
|
"created_at" integer NOT NULL,
|
||||||
|
"edited_at" integer,
|
||||||
|
"deleted_at" integer,
|
||||||
|
"type" text DEFAULT 'text' NOT NULL,
|
||||||
|
"metadata" text,
|
||||||
|
"ai_status" text DEFAULT 'pending' NOT NULL,
|
||||||
|
"ai_moderation_flags" text,
|
||||||
|
"ai_moderation_score" real,
|
||||||
|
"ai_moderation_raw" text,
|
||||||
|
"ai_analysis" text,
|
||||||
|
"ai_analyzed_at" integer,
|
||||||
|
"ai_error" text
|
||||||
|
)
|
||||||
|
`);
|
||||||
|
} catch (error) {
|
||||||
|
logger.debug("Messages table already exists or error creating it", { error });
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
@@ -41,16 +72,7 @@ describe("listMessages integration tests", () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async () => {
|
describe("listMessages", () => {
|
||||||
// Clear messages table before each test
|
|
||||||
try {
|
|
||||||
const db = getDatabase();
|
|
||||||
await db.delete(messagesTable);
|
|
||||||
} catch (error) {
|
|
||||||
logger.debug("Could not clear messages table", { error });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const createTestMessage = (
|
const createTestMessage = (
|
||||||
overrides: Partial<MessageRecord> = {},
|
overrides: Partial<MessageRecord> = {},
|
||||||
): MessageRecord => ({
|
): MessageRecord => ({
|
||||||
@@ -316,33 +338,7 @@ describe("listMessages integration tests", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("listReviewMessages integration tests", () => {
|
describe("listReviewMessages", () => {
|
||||||
beforeAll(async () => {
|
|
||||||
// Initialize database once for all tests
|
|
||||||
await initializeDatabase();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterAll(async () => {
|
|
||||||
try {
|
|
||||||
await closeDatabase();
|
|
||||||
} catch (error) {
|
|
||||||
logger.error(
|
|
||||||
{ error: error instanceof Error ? error.message : String(error) },
|
|
||||||
"Error closing database in afterAll",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
|
||||||
// Clear messages table before each test
|
|
||||||
try {
|
|
||||||
const db = getDatabase();
|
|
||||||
await db.delete(messagesTable);
|
|
||||||
} catch (error) {
|
|
||||||
logger.debug("Could not clear messages table", { error });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const createTestMessage = (
|
const createTestMessage = (
|
||||||
overrides: Partial<MessageRecord> = {},
|
overrides: Partial<MessageRecord> = {},
|
||||||
): MessageRecord => ({
|
): MessageRecord => ({
|
||||||
@@ -489,3 +485,4 @@ describe("listReviewMessages integration tests", () => {
|
|||||||
expect(overlap).toHaveLength(0);
|
expect(overlap).toHaveLength(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user