iamolegga/nestjs-configure-after

View on GitHub
__tests__/utils/request-app-with.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { Controller, Get, Module, Type } from '@nestjs/common';
import { ModuleMetadata } from '@nestjs/common/interfaces';
import { AbstractHttpAdapter, NestFactory } from '@nestjs/core';
import request from 'supertest';

import { fastifyExtraWait } from './fastify-extra-wait';

export async function requestAppWith(
  modules: ModuleMetadata['imports'],
  Adapter: Type<AbstractHttpAdapter<unknown, unknown, unknown>>,
  getOrder: () => string,
) {
  @Controller('/')
  class TestController {
    @Get()
    get() {
      return { order: getOrder() };
    }
  }

  @Module({
    imports: modules,
    controllers: [TestController],
  })
  class TestModule {}

  const app = await NestFactory.create(TestModule, new Adapter(), {
    logger: false,
  });

  const server = app.getHttpServer();
  await app.init();
  await fastifyExtraWait(Adapter, app);
  const { body }: { body: { order: string } } = await request(server).get('/');
  await app.close();
  return body;
}