import { expect, tap } from '@git.zone/tstest/tapbundle';
import * as qenv from '@push.rocks/qenv';

const testQenv = new qenv.Qenv('./', './.nogit/');

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

let testSmartai: smartai.SmartAi;

tap.test('OpenAI Chat: should create a smartai instance with OpenAI provider', async () => {
  testSmartai = new smartai.SmartAi({
    openaiToken: await testQenv.getEnvVarOnDemand('OPENAI_TOKEN'),
  });
  await testSmartai.start();
});

tap.test('OpenAI Chat: should create chat response', async () => {
  const userMessage = 'How are you?';
  const response = await testSmartai.openaiProvider.chat({
    systemMessage: 'Hello',
    userMessage: userMessage,
    messageHistory: [],
  });
  console.log(`userMessage: ${userMessage}`);
  console.log(response.message);
  expect(response.role).toEqual('assistant');
  expect(response.message).toBeTruthy();
});

tap.test('OpenAI Chat: should stop the smartai instance', async () => {
  await testSmartai.stop();
});

export default tap.start();
