import { tap, expect } from '@push.rocks/tapbundle';
import * as smartpath from '@push.rocks/smartpath';

import { TypedServer } from '../ts/index.js';

let testTypedServer: TypedServer;
tap.test('should create a valid instance of TypedServer', async () => {
  testTypedServer = new TypedServer({
    injectReload: true,
    port: 3000,
    serveDir: smartpath.get.dirnameFromImportMetaUrl(import.meta.url),
    watch: true,
    cors: true,
  });
  expect(testTypedServer).toBeInstanceOf(TypedServer);
});

tap.test('should start to serve files', async (tools) => {
  await testTypedServer.start();
  await tools.delayFor(5000);
  await testTypedServer.reload();
  await tools.delayFor(5000);
  await testTypedServer.reload();
});

tap.test('should stop to serve files ', async (tools) => {
  await tools.delayFor(5000);
  await testTypedServer.stop();
});

tap.start();