import { expect, tap } from '@push.rocks/tapbundle';
import { Qenv } from '@push.rocks/qenv';
const testQenv = new Qenv('./', './.nogit/');

delete process.env.CLI_CALL;

import * as cloudly from '../ts/index.js';

process.env.TESTING_CLOUDLY = 'true';

let testCloudly: cloudly.Cloudly;

tap.test('first test', async () => {
  const cloudlyConfig: cloudly.ICloudlyConfig = {
    cfToken: await testQenv.getEnvVarOnDemand('CF_TOKEN'),
    environment: 'integration',
    letsEncryptEmail: await testQenv.getEnvVarOnDemand('LETSENCRYPT_EMAIL'),
    publicUrl: await testQenv.getEnvVarOnDemand('SERVEZONE_URL'),
    publicPort: await testQenv.getEnvVarOnDemand('SERVEZONE_PORT'),
    mongoDescriptor: {
      mongoDbName: await testQenv.getEnvVarOnDemand('MONGODB_DATABASE'),
      mongoDbPass: await testQenv.getEnvVarOnDemand('MONGODB_PASSWORD'),
      mongoDbUrl: await testQenv.getEnvVarOnDemand('MONGODB_URL')
    },
    digitalOceanToken: await testQenv.getEnvVarOnDemand('DIGITALOCEAN_TOKEN')
  };
  testCloudly = new cloudly.Cloudly(cloudlyConfig);
  expect(testCloudly).toBeInstanceOf(cloudly.Cloudly);
});

tap.test('should init servezone', async () => {
  await testCloudly.start();
});

tap.test('should end the service', async () => {
  await testCloudly.stop();
});

tap.start();