import { describe, it, expect, vi, beforeEach } from 'vitest';
import { chatService } from './chatService';

describe('chatService', () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  describe('getChannels', () => {
    it('should return channels', async () => {
      const channels = await chatService.getChannels();

      expect(channels).toBeDefined();
      expect(Array.isArray(channels)).toBe(true);
    });
  });

  describe('getDMs', () => {
    it('should return direct messages', async () => {
      const dms = await chatService.getDMs();

      expect(dms).toBeDefined();
      expect(Array.isArray(dms)).toBe(true);
    });
  });

  describe('getMessages', () => {
    it('should return messages for a channel', async () => {
      const messages = await chatService.getMessages('channel-1');

      expect(messages).toBeDefined();
      expect(Array.isArray(messages)).toBe(true);
    });
  });

  describe('sendMessage', () => {
    it('should send a message successfully', async () => {
      const result = await chatService.sendMessage('channel-1', {
        content: 'Test message',
      });

      expect(result).toBeDefined();
      expect(result).toHaveProperty('id');
      expect(result).toHaveProperty('sender');
      expect(result).toHaveProperty('content');
    });
  });
});
