Fix lint issues in unit test helpers

This commit is contained in:
beatz174-bit
2025-12-02 18:41:17 +10:00
parent f807857bec
commit 1030476ed1
4 changed files with 95 additions and 51 deletions
+54 -22
View File
@@ -1,45 +1,77 @@
import { vi } from 'vitest';
export type TableMock<T = any> = {
toArray: ReturnType<typeof vi.fn>;
add: ReturnType<typeof vi.fn>;
update: ReturnType<typeof vi.fn>;
where: ReturnType<typeof vi.fn>;
filter: ReturnType<typeof vi.fn>;
count: ReturnType<typeof vi.fn>;
type WhereClause<T> = {
equals: ReturnType<typeof vi.fn<[T], { first: ReturnType<typeof vi.fn<[], Promise<T | undefined>>> }>>;
};
const createWhere = () => ({
equals: vi.fn().mockReturnValue({ first: vi.fn().mockResolvedValue(undefined) }),
type FilterClause<T> = {
first: ReturnType<typeof vi.fn<[], Promise<T | undefined>>>;
};
export type TableMock<T = unknown> = {
toArray: ReturnType<typeof vi.fn<[], Promise<T[]>>>;
add: ReturnType<typeof vi.fn<[T], Promise<unknown>>>;
update: ReturnType<typeof vi.fn<[string, Partial<T>], Promise<unknown>>>;
where: ReturnType<typeof vi.fn<[keyof T], WhereClause<T[keyof T]>>>;
filter: ReturnType<typeof vi.fn<[(item: T) => boolean], FilterClause<T>>>;
count: ReturnType<typeof vi.fn<[], Promise<number>>>;
};
const createWhere = <T>(): WhereClause<T> => ({
equals: vi.fn<[T], { first: ReturnType<typeof vi.fn<[], Promise<T | undefined>>> }>().mockReturnValue({
first: vi.fn<[], Promise<T | undefined>>().mockResolvedValue(undefined),
}),
});
export const makeTableMock = <T = any>(items: T[] = []): TableMock<T> => ({
toArray: vi.fn().mockResolvedValue([...items]),
add: vi.fn().mockResolvedValue(undefined),
update: vi.fn().mockResolvedValue(undefined),
where: vi.fn().mockImplementation(() => createWhere()),
filter: vi.fn().mockReturnValue({ first: vi.fn().mockResolvedValue(undefined) }),
count: vi.fn().mockResolvedValue(0),
export const makeTableMock = <T = unknown>(items: T[] = []): TableMock<T> => ({
toArray: vi.fn<[], Promise<T[]>>().mockResolvedValue([...items]),
add: vi.fn<[T], Promise<unknown>>().mockResolvedValue(undefined),
update: vi.fn<[string, Partial<T>], Promise<unknown>>().mockResolvedValue(undefined),
where: vi.fn<[keyof T], WhereClause<T[keyof T]>>().mockImplementation(() => createWhere<T[keyof T]>()),
filter: vi
.fn<[(item: T) => boolean], FilterClause<T>>()
.mockReturnValue({ first: vi.fn<[], Promise<T | undefined>>().mockResolvedValue(undefined) }),
count: vi.fn<[], Promise<number>>().mockResolvedValue(0),
});
export const makeMockDb = (overrides: Partial<Record<string, any>> = {}) => {
type MockDbOverrides = {
products: unknown[];
categories: unknown[];
pickLists: unknown[];
pickItems: unknown[];
importExportLogs: unknown[];
};
type TransactionMock = ReturnType<typeof vi.fn<[string, ...unknown[]], Promise<unknown>>>;
type MockDb = {
products: TableMock;
categories: TableMock;
pickLists: TableMock;
pickItems: TableMock;
importExportLogs: TableMock;
transaction: TransactionMock;
open: ReturnType<typeof vi.fn<[], Promise<unknown>>>;
};
export const makeMockDb = (overrides: Partial<MockDbOverrides> = {}): MockDb => {
const products = makeTableMock(overrides.products ?? []);
const categories = makeTableMock(overrides.categories ?? []);
const pickLists = makeTableMock(overrides.pickLists ?? []);
const pickItems = makeTableMock(overrides.pickItems ?? []);
const importExportLogs = makeTableMock(overrides.importExportLogs ?? []);
const transaction = vi
.fn()
.mockImplementation(async (_mode: any, ...args: any[]) => {
const transaction = vi.fn<[string, ...unknown[]], Promise<unknown>>().mockImplementation(
async (_mode, ...args) => {
const cb = args[args.length - 1];
if (typeof cb === 'function') {
return cb();
}
return undefined;
});
},
);
const open = vi.fn().mockResolvedValue(undefined);
const open = vi.fn<[], Promise<unknown>>().mockResolvedValue(undefined);
return {
products,