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 { describe, it, expect, beforeAll } 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';
|
|
||||||
|
|
||||||
describe('portal.service — getPortalUserYachts', () => {
|
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 () => {
|
it('returns client-owned yachts only when client has no memberships', async () => {
|
||||||
const port = await makePort();
|
const port = await makePort();
|
||||||
const client = await makeClient({ portId: port.id });
|
const client = await makeClient({ portId: port.id });
|
||||||
@@ -156,6 +173,27 @@ describe('portal.service — getPortalUserYachts', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('portal.service — getPortalUserMemberships', () => {
|
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 () => {
|
it('returns only active memberships', async () => {
|
||||||
const port = await makePort();
|
const port = await makePort();
|
||||||
const client = await makeClient({ portId: port.id });
|
const client = await makeClient({ portId: port.id });
|
||||||
@@ -203,6 +241,30 @@ describe('portal.service — getPortalUserMemberships', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('portal.service — getPortalUserReservations', () => {
|
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 () => {
|
it('returns active + pending reservations', async () => {
|
||||||
const port = await makePort();
|
const port = await makePort();
|
||||||
const client = await makeClient({ portId: port.id });
|
const client = await makeClient({ portId: port.id });
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import { defineConfig } from 'vitest/config';
|
import { defineConfig } from 'vitest/config';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||||
|
const { loadEnv } = require('vite');
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
test: {
|
test: {
|
||||||
@@ -12,13 +14,10 @@ export default defineConfig({
|
|||||||
provider: 'v8',
|
provider: 'v8',
|
||||||
reporter: ['text', 'lcov', 'json-summary'],
|
reporter: ['text', 'lcov', 'json-summary'],
|
||||||
include: ['src/lib/**'],
|
include: ['src/lib/**'],
|
||||||
exclude: [
|
exclude: ['src/lib/db/migrations/**', 'src/lib/db/schema/**', 'src/**/*.d.ts'],
|
||||||
'src/lib/db/migrations/**',
|
|
||||||
'src/lib/db/schema/**',
|
|
||||||
'src/**/*.d.ts',
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
testTimeout: 30_000,
|
testTimeout: 30_000,
|
||||||
|
env: loadEnv('test', process.cwd(), ''),
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: { '@': path.resolve(__dirname, './src') },
|
alias: { '@': path.resolve(__dirname, './src') },
|
||||||
|
|||||||
Reference in New Issue
Block a user