86 lines
2.8 KiB
TypeScript
86 lines
2.8 KiB
TypeScript
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
|
|
vi.mock('@/utils/request', () => ({
|
|
default: {
|
|
get: vi.fn(),
|
|
post: vi.fn(),
|
|
put: vi.fn(),
|
|
delete: vi.fn(),
|
|
},
|
|
}))
|
|
|
|
import request from '@/utils/request'
|
|
import {
|
|
continueSession,
|
|
pauseSession,
|
|
endSession,
|
|
startOrContinueStudySession,
|
|
getSessionDetail,
|
|
} from '@/api/studySessions'
|
|
|
|
const mockedRequest = vi.mocked(request)
|
|
|
|
describe('studySessions API', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
})
|
|
|
|
it('continueSession sends POST to correct endpoint', async () => {
|
|
mockedRequest.post.mockResolvedValue({ code: 200, data: null })
|
|
await continueSession('S001')
|
|
expect(mockedRequest.post).toHaveBeenCalledWith('/study-sessions/S001/study-sessions/continue')
|
|
})
|
|
|
|
it('pauseSession sends POST with endTime param when provided', async () => {
|
|
mockedRequest.post.mockResolvedValue({ code: 200, data: null })
|
|
const endTime = new Date('2024-01-15T10:30:00Z')
|
|
await pauseSession('S001', endTime)
|
|
expect(mockedRequest.post).toHaveBeenCalledWith(
|
|
'/study-sessions/S001/study-sessions/pause',
|
|
null,
|
|
{ params: { endTime: endTime.toISOString() } }
|
|
)
|
|
})
|
|
|
|
it('pauseSession sends POST with null params when endTime not provided', async () => {
|
|
mockedRequest.post.mockResolvedValue({ code: 200, data: null })
|
|
await pauseSession('S001')
|
|
expect(mockedRequest.post).toHaveBeenCalledWith(
|
|
'/study-sessions/S001/study-sessions/pause',
|
|
null,
|
|
{ params: null }
|
|
)
|
|
})
|
|
|
|
it('endSession sends POST with default content', async () => {
|
|
mockedRequest.post.mockResolvedValue({ code: 200, data: null })
|
|
await endSession('S001')
|
|
expect(mockedRequest.post).toHaveBeenCalledWith(
|
|
'/study-sessions/S001/study-sessions/ended',
|
|
{ content: '任务结束' }
|
|
)
|
|
})
|
|
|
|
it('endSession sends POST with custom content', async () => {
|
|
mockedRequest.post.mockResolvedValue({ code: 200, data: null })
|
|
await endSession('S001', '自定义结束')
|
|
expect(mockedRequest.post).toHaveBeenCalledWith(
|
|
'/study-sessions/S001/study-sessions/ended',
|
|
{ content: '自定义结束' }
|
|
)
|
|
})
|
|
|
|
it('startOrContinueStudySession sends GET to correct endpoint', async () => {
|
|
mockedRequest.get.mockResolvedValue({ code: 200, data: { sessionNum: 'S002' } })
|
|
const result = await startOrContinueStudySession('T001')
|
|
expect(mockedRequest.get).toHaveBeenCalledWith('/tasks/T001/study-sessions/start-or-continue')
|
|
expect(result).toEqual({ code: 200, data: { sessionNum: 'S002' } })
|
|
})
|
|
|
|
it('getSessionDetail sends GET to correct endpoint', async () => {
|
|
mockedRequest.get.mockResolvedValue({ code: 200, data: { id: 1 } })
|
|
await getSessionDetail('S001')
|
|
expect(mockedRequest.get).toHaveBeenCalledWith('/study-sessions/S001')
|
|
})
|
|
})
|