fix(tests): use dynamic imports in portal.test.ts to avoid env validation
This commit is contained in:
@@ -1,24 +1,41 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
|
||||
import {
|
||||
getPortalUserYachts,
|
||||
getPortalUserMemberships,
|
||||
getPortalUserReservations,
|
||||
} from '@/lib/services/portal.service';
|
||||
import {
|
||||
makeClient,
|
||||
makeCompany,
|
||||
makeMembership,
|
||||
makePort,
|
||||
makeYacht,
|
||||
makeBerth,
|
||||
makeReservation,
|
||||
} from '../../helpers/factories';
|
||||
import { db } from '@/lib/db';
|
||||
import { yachts } from '@/lib/db/schema';
|
||||
import { eq } from 'drizzle-orm';
|
||||
import { describe, it, expect, beforeAll } from 'vitest';
|
||||
|
||||
describe('portal.service — getPortalUserYachts', () => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
let getPortalUserYachts: (clientId: string, portId: string) => Promise<Array<any>>;
|
||||
|
||||
let makeClient: typeof import('../../helpers/factories').makeClient;
|
||||
|
||||
let makePort: typeof import('../../helpers/factories').makePort;
|
||||
|
||||
let makeYacht: typeof import('../../helpers/factories').makeYacht;
|
||||
|
||||
let makeCompany: typeof import('../../helpers/factories').makeCompany;
|
||||
|
||||
let makeMembership: typeof import('../../helpers/factories').makeMembership;
|
||||
|
||||
let db: typeof import('@/lib/db').db;
|
||||
|
||||
let yachts: typeof import('@/lib/db/schema').yachts;
|
||||
|
||||
let eq: typeof import('drizzle-orm').eq;
|
||||
|
||||
beforeAll(async () => {
|
||||
const portalMod = await import('@/lib/services/portal.service');
|
||||
getPortalUserYachts = portalMod.getPortalUserYachts;
|
||||
const factoriesMod = await import('../../helpers/factories');
|
||||
makeClient = factoriesMod.makeClient;
|
||||
makePort = factoriesMod.makePort;
|
||||
makeYacht = factoriesMod.makeYacht;
|
||||
makeCompany = factoriesMod.makeCompany;
|
||||
makeMembership = factoriesMod.makeMembership;
|
||||
const dbMod = await import('@/lib/db');
|
||||
db = dbMod.db;
|
||||
const schemaMod = await import('@/lib/db/schema');
|
||||
yachts = schemaMod.yachts;
|
||||
const ormMod = await import('drizzle-orm');
|
||||
eq = ormMod.eq;
|
||||
});
|
||||
it('returns client-owned yachts only when client has no memberships', async () => {
|
||||
const port = await makePort();
|
||||
const client = await makeClient({ portId: port.id });
|
||||
@@ -156,6 +173,27 @@ describe('portal.service — getPortalUserYachts', () => {
|
||||
});
|
||||
|
||||
describe('portal.service — getPortalUserMemberships', () => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
let getPortalUserMemberships: (clientId: string, portId: string) => Promise<Array<any>>;
|
||||
|
||||
let makeClient: typeof import('../../helpers/factories').makeClient;
|
||||
|
||||
let makePort: typeof import('../../helpers/factories').makePort;
|
||||
|
||||
let makeCompany: typeof import('../../helpers/factories').makeCompany;
|
||||
|
||||
let makeMembership: typeof import('../../helpers/factories').makeMembership;
|
||||
|
||||
beforeAll(async () => {
|
||||
const portalMod = await import('@/lib/services/portal.service');
|
||||
getPortalUserMemberships = portalMod.getPortalUserMemberships;
|
||||
const factoriesMod = await import('../../helpers/factories');
|
||||
makeClient = factoriesMod.makeClient;
|
||||
makePort = factoriesMod.makePort;
|
||||
makeCompany = factoriesMod.makeCompany;
|
||||
makeMembership = factoriesMod.makeMembership;
|
||||
});
|
||||
|
||||
it('returns only active memberships', async () => {
|
||||
const port = await makePort();
|
||||
const client = await makeClient({ portId: port.id });
|
||||
@@ -203,6 +241,30 @@ describe('portal.service — getPortalUserMemberships', () => {
|
||||
});
|
||||
|
||||
describe('portal.service — getPortalUserReservations', () => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
let getPortalUserReservations: (clientId: string, portId: string) => Promise<Array<any>>;
|
||||
|
||||
let makeClient: typeof import('../../helpers/factories').makeClient;
|
||||
|
||||
let makePort: typeof import('../../helpers/factories').makePort;
|
||||
|
||||
let makeYacht: typeof import('../../helpers/factories').makeYacht;
|
||||
|
||||
let makeBerth: typeof import('../../helpers/factories').makeBerth;
|
||||
|
||||
let makeReservation: typeof import('../../helpers/factories').makeReservation;
|
||||
|
||||
beforeAll(async () => {
|
||||
const portalMod = await import('@/lib/services/portal.service');
|
||||
getPortalUserReservations = portalMod.getPortalUserReservations;
|
||||
const factoriesMod = await import('../../helpers/factories');
|
||||
makeClient = factoriesMod.makeClient;
|
||||
makePort = factoriesMod.makePort;
|
||||
makeYacht = factoriesMod.makeYacht;
|
||||
makeBerth = factoriesMod.makeBerth;
|
||||
makeReservation = factoriesMod.makeReservation;
|
||||
});
|
||||
|
||||
it('returns active + pending reservations', async () => {
|
||||
const port = await makePort();
|
||||
const client = await makeClient({ portId: port.id });
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { defineConfig } from 'vitest/config';
|
||||
import path from 'path';
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
const { loadEnv } = require('vite');
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
@@ -12,13 +14,10 @@ export default defineConfig({
|
||||
provider: 'v8',
|
||||
reporter: ['text', 'lcov', 'json-summary'],
|
||||
include: ['src/lib/**'],
|
||||
exclude: [
|
||||
'src/lib/db/migrations/**',
|
||||
'src/lib/db/schema/**',
|
||||
'src/**/*.d.ts',
|
||||
],
|
||||
exclude: ['src/lib/db/migrations/**', 'src/lib/db/schema/**', 'src/**/*.d.ts'],
|
||||
},
|
||||
testTimeout: 30_000,
|
||||
env: loadEnv('test', process.cwd(), ''),
|
||||
},
|
||||
resolve: {
|
||||
alias: { '@': path.resolve(__dirname, './src') },
|
||||
|
||||
Reference in New Issue
Block a user