import { tap, expect } from '@git.zone/tstest/tapbundle';
import * as smartai from '../ts/index.js';

// Test research method stubs for providers without full implementation
// These providers have research methods that throw "not yet supported" errors

tap.test('Research Stubs: Perplexity provider should have research method', async () => {
  const perplexityProvider = new smartai.PerplexityProvider({
    perplexityToken: 'test-token'
  });

  // Perplexity has a basic implementation with Sonar models
  expect(typeof perplexityProvider.research).toEqual('function');
});

tap.test('Research Stubs: Groq provider should throw not supported error', async () => {
  const groqProvider = new smartai.GroqProvider({
    groqToken: 'test-token'
  });

  expect(typeof groqProvider.research).toEqual('function');

  let errorCaught = false;
  try {
    await groqProvider.research({ query: 'test' });
  } catch (error) {
    errorCaught = true;
    expect(error.message).toInclude('not yet supported');
  }
  expect(errorCaught).toBeTrue();
});

tap.test('Research Stubs: Ollama provider should throw not supported error', async () => {
  const ollamaProvider = new smartai.OllamaProvider({});

  expect(typeof ollamaProvider.research).toEqual('function');

  let errorCaught = false;
  try {
    await ollamaProvider.research({ query: 'test' });
  } catch (error) {
    errorCaught = true;
    expect(error.message).toInclude('not yet supported');
  }
  expect(errorCaught).toBeTrue();
});

tap.test('Research Stubs: xAI provider should throw not supported error', async () => {
  const xaiProvider = new smartai.XAIProvider({
    xaiToken: 'test-token'
  });

  expect(typeof xaiProvider.research).toEqual('function');

  let errorCaught = false;
  try {
    await xaiProvider.research({ query: 'test' });
  } catch (error) {
    errorCaught = true;
    expect(error.message).toInclude('not yet supported');
  }
  expect(errorCaught).toBeTrue();
});

tap.test('Research Stubs: Exo provider should throw not supported error', async () => {
  const exoProvider = new smartai.ExoProvider({});

  expect(typeof exoProvider.research).toEqual('function');

  let errorCaught = false;
  try {
    await exoProvider.research({ query: 'test' });
  } catch (error) {
    errorCaught = true;
    expect(error.message).toInclude('not yet supported');
  }
  expect(errorCaught).toBeTrue();
});

export default tap.start();