import MockAdapter from 'axios-mock-adapter';
import { api } from './auth'; // 添加api导入
import { createTorrent, getTorrents, getTorrentDetail, likeTorrent, addTorrentComment } from './torrent';

describe('种子资源API', () => {
  let mockAxios;

  beforeEach(() => {
    mockAxios = new MockAdapter(api);
  });

  afterEach(() => {
    mockAxios.restore();
  });

  describe('createTorrent - 创建种子', () => {
    it('应该发送完整的种子数据', async () => {
      const torrentData = {
        torrentName: '测试种子',
        description: '描述内容',
        username: 'user1',
        category: '电影',
        region: '美国',
        resolution: '1080p',
        subtitle: '中文字幕',
        filePath: '/path/to/file'
      };
      mockAxios.onPost('/torrent', torrentData).reply(201, { code: 201 });

      const response = await createTorrent(...Object.values(torrentData));
      expect(response.status).toBe(201);
    });
  });

  describe('getTorrentDetail - 获取种子详情', () => {
    it('应该规范化返回的数据结构', async () => {
      const mockData = {
        data: {
          post: { id: '123', name: '测试种子' },
          comments: [{ id: '1', content: '评论1' }]
        }
      };
      mockAxios.onGet('/torrent/123').reply(200, mockData);

      const response = await getTorrentDetail('123');
      expect(response.data.data.torrent.name).toBe('测试种子');
      expect(response.data.data.comments).toHaveLength(1);
    });
  });

  describe('likeTorrent - 点赞种子', () => {
    it('应该成功发送点赞请求', async () => {
      mockAxios.onPost('/torrent/t123/like').reply(200, { code: 200 });
      const response = await likeTorrent('t123');
      expect(response.status).toBe(200);
    });
  });
});