test: add vitest config and unit tests
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
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')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user