{"version":3,"sources":["../../src/mock/Mocks.ts"],"sourcesContent":["import { Id, Json } from '../utils/Types';\nimport { Req } from '../utils/Req';\nimport { HttpStatus, Response } from '../utils/Response';\n\nexport class Mocks {\n  req = {\n    id: (id: Id): Req => new Req({ id }),\n    q: (q: unknown): Req => new Req({ q }),\n    with: (a: Json): Req => new Req(a),\n    body: <B = unknown>(body: B): Req<B> => new Req<B>({ body }),\n    path: (path: Json): Req => new Req({ path }),\n    query: (query: Json): Req => new Req({ query }),\n  };\n  resp = {\n    items: (status: HttpStatus, items: unknown[] = []): Response => ({\n      status: status,\n      body: {\n        data: {\n          code: status.id as number,\n          itemCount: items.length,\n          items,\n        },\n      },\n    }),\n    errors: (status: HttpStatus, message: string, errors: unknown[] = []): Response => ({\n      status: status,\n      body: {\n        error: {\n          code: status.id as number,\n          message: message,\n          errorCount: errors.length,\n          errors,\n        },\n      },\n    }),\n  };\n  provider = {\n    data: (...items: any[]): { execute: jest.Mock } => ({\n      execute: jest.fn().mockResolvedValue({\n        body: {\n          data: {\n            itemCount: items.length,\n            items,\n          },\n        },\n      }),\n    }),\n  };\n\n  static readonly getArg = <T>(mock: unknown, call = 0, arg = 0): T | undefined => {\n    if (!isJestMock(mock)) throw new Error('Function provided is not a Jest mock');\n    return mock.mock.calls[call]?.[arg] as T;\n  };\n\n  clear = (): typeof jest => jest.clearAllMocks();\n\n  impl = (f?: (...args: any[]) => any): jest.Mock => jest.fn().mockImplementation(f);\n\n  property = <T extends object, P extends jest.NonFunctionPropertyNames<Required<T>>>(object: T, getter: P, value: T[P]): jest.SpyInstance =>\n    jest.spyOn(object, getter, 'get' as jest.PropertyAccessors<P, T>).mockReturnValue(value as any);\n\n  reject = (value?: unknown): jest.Mock => jest.fn().mockRejectedValue(value);\n\n  rejectWith = <T = any>(props: Partial<T> = {}): jest.Mock => jest.fn().mockRejectedValue(mock.a(props));\n\n  resolve = (value?: unknown): jest.Mock => jest.fn().mockResolvedValue(value);\n\n  resolveWith = <T = any>(props: Partial<T> = {}): jest.Mock => jest.fn().mockResolvedValue(mock.a(props));\n\n  return = (value?: unknown): jest.Mock => jest.fn().mockReturnValue(value);\n\n  returnWith = <T = any>(props: Partial<T> = {}): jest.Mock => jest.fn().mockReturnValue(mock.a(props));\n\n  this = (): jest.Mock => jest.fn().mockReturnThis();\n\n  empty = <T = any>(props: Partial<T> = {}): T => props as T;\n  a = this.empty;\n  an = this.empty;\n  date = (epoch = 1621347575): Date => {\n    const date = new Date(epoch);\n    date.toString = mock.return('Mon Jan 19 1970 19:22:27 GMT+0100 (Central European Standard Time)');\n    date.toLocaleDateString = mock.return('19/01/1970');\n    date.toDateString = mock.return('19/01/1970');\n    return date;\n  };\n  once = (...values: unknown[]): jest.Mock => values.reduce((m: jest.Mock, v: unknown) => m.mockImplementationOnce(() => v), jest.fn());\n}\n\nfunction isJestMock(fn: any): fn is jest.Mock {\n  return typeof fn === 'function' && 'mock' in fn && Array.isArray(fn.mock?.calls);\n}\n\nexport const mock = new Mocks();\n"],"mappings":"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","names":["mock"]}