import MockAdapter from 'axios-mock-adapter';
import instance from '@/utils/axios'
import { setupAuthMock }  from './auth'
import { setupUserMock } from './user';
import { setupPostMock } from './post';
import {setupUserMessageMock} from './homepage';
import { setupUploadMock } from './upload';

// 创建 Mock 实例
export const mock = new MockAdapter(instance, { 
  delayResponse: process.env.NODE_ENV === 'test' ? 0 : 500 
})

// 聚合所有 Mock 模块
export function setupMock() {
  // 开发环境启用 Mock
  if (process.env.NODE_ENV !== 'development') return

  // 加载各模块 Mock
  setupAuthMock(mock)
  setupUserMock(mock)
  setupPostMock(mock)
  setupUserMessageMock(mock)
  setupUploadMock(mock)

  console.log('Mock 模块已加载')
}

// 自动执行
setupMock()