UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

165 lines (164 loc) 6.4 kB
/** * Knex mocking utilities for service tests * Provides mock knex instances, table builders, and tracker utilities */ import knex from 'knex'; import { type Tracker } from 'knex-mock-client'; /** * Creates a mocked knex instance with tracker and schema builder support * * @returns Object containing the mocked db instance, tracker, and mockSchema * * @example * ```typescript * const { db, tracker, mockSchema } = createMockKnex(); * * // Use tracker to mock query responses * tracker.on.select('users').response([{ id: 1, name: 'John' }]); * * // Verify schema operations * expect(mockSchema.createTable).toHaveBeenCalled(); * ``` */ export declare function createMockKnex(): { db: import("vitest").MockedFunction<knex.Knex<any, unknown[]>>; tracker: Tracker; mockSchemaBuilder: { createTable: import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>; dropTable: import("vitest").Mock<(...args: any[]) => any>; hasTable: import("vitest").Mock<(...args: any[]) => any>; table: import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>; alterTable: import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>; dropTableIfExists: import("vitest").Mock<(...args: any[]) => any>; renameTable: import("vitest").Mock<(...args: any[]) => any>; raw: import("vitest").Mock<(...args: any[]) => any>; }; }; /** * Creates a mock table builder for schema operations * Used for testing column creation and alteration * * @returns Mock table builder with chainable methods * * @example * ```typescript * const table = createMockTableBuilder(); * table.string('name', 255).notNullable().index(); * ``` */ export declare function createMockTableBuilder(): { string: import("vitest").Mock<(...args: any[]) => any>; text: import("vitest").Mock<(...args: any[]) => any>; integer: import("vitest").Mock<(...args: any[]) => any>; bigInteger: import("vitest").Mock<(...args: any[]) => any>; float: import("vitest").Mock<(...args: any[]) => any>; decimal: import("vitest").Mock<(...args: any[]) => any>; boolean: import("vitest").Mock<(...args: any[]) => any>; date: import("vitest").Mock<(...args: any[]) => any>; dateTime: import("vitest").Mock<(...args: any[]) => any>; timestamp: import("vitest").Mock<(...args: any[]) => any>; json: import("vitest").Mock<(...args: any[]) => any>; jsonb: import("vitest").Mock<(...args: any[]) => any>; uuid: import("vitest").Mock<(...args: any[]) => any>; increments: import("vitest").Mock<(...args: any[]) => any>; bigIncrements: import("vitest").Mock<(...args: any[]) => any>; defaultTo: import("vitest").Mock<(...args: any[]) => any>; notNullable: import("vitest").Mock<(...args: any[]) => any>; nullable: import("vitest").Mock<(...args: any[]) => any>; primary: import("vitest").Mock<(...args: any[]) => any>; unique: import("vitest").Mock<(...args: any[]) => any>; index: import("vitest").Mock<(...args: any[]) => any>; alter: import("vitest").Mock<(...args: any[]) => any>; dropColumn: import("vitest").Mock<(...args: any[]) => any>; dropUnique: import("vitest").Mock<(...args: any[]) => any>; dropIndex: import("vitest").Mock<(...args: any[]) => any>; }; /** * Sets up common database operation mock handlers for all system collections * Automatically mocks CRUD operations (select, insert, update, delete) for all Directus system collections * * @param tracker The knex-mock-client tracker instance * * @example * ```typescript * const { db, tracker, mockSchema } = createMockKnex(); * setupSystemCollectionMocks(tracker); * // Now all CRUD operations on system collections are mocked * ``` */ export declare function setupSystemCollectionMocks(tracker: Tracker): void; /** * Resets all mock states * Should be called in afterEach hooks to clean up between tests * * @param tracker The knex-mock-client tracker instance * @param mockSchema The mock schema object from createMockKnex * * @example * ```typescript * const { db, tracker, mockSchema } = createMockKnex(); * * afterEach(() => { * resetMocks(tracker, mockSchema); * }); * ``` */ export declare function resetKnexMocks(tracker: Tracker, mockSchema: ReturnType<typeof createMockKnex>['mockSchemaBuilder']): void; /** * Creates a mock createTable function for testing table creation * Returns a vi.fn() that calls the callback with a mock table builder * * @returns Mock function for db.schema.createTable * * @example * ```typescript * const { db } = createMockKnex(); * const createTableSpy = mockCreateTable(); * db.schema.createTable = createTableSpy as any; * * // Now when createTable is called, it will invoke the callback with a mock table builder * await db.schema.createTable('users', (table) => { * table.increments('id'); * table.string('name'); * }); * ``` */ export declare function mockCreateTable(): import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>; /** * Creates a mock alterTable function for testing schema alterations * Returns a vi.fn() that calls the callback with a mock table builder * * @returns Mock function for db.schema.alterTable * * @example * ```typescript * const { db } = createMockKnex(); * const alterTableSpy = mockAlterTable(); * db.schema.alterTable = alterTableSpy as any; * * // Now when alterTable is called, it will invoke the callback with a mock table builder * await db.schema.alterTable('users', (table) => { * table.string('name'); * }); * ``` */ export declare function mockAlterTable(): import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>; /** * Creates a mock schema.table function for testing schema operations * Returns a vi.fn() that calls the callback with a mock table builder * * @returns Mock function for db.schema.table * * @example * ```typescript * const { db } = createMockKnex(); * const schemaTableSpy = mockSchemaTable(); * db.schema.table = schemaTableSpy as any; * * // Now when schema.table is called, it will invoke the callback with a mock table builder * await db.schema.table('users', (table) => { * table.dropColumn('name'); * }); * ``` */ export declare function mockSchemaTable(): import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>;