update
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
||||
import { setActivePinia, createPinia } from 'pinia'
|
||||
|
||||
vi.mock('@/utils/request', () => ({
|
||||
api: {
|
||||
get: vi.fn(),
|
||||
post: vi.fn(),
|
||||
put: vi.fn(),
|
||||
patch: vi.fn(),
|
||||
delete: vi.fn(),
|
||||
},
|
||||
}))
|
||||
|
||||
import { api } from '@/utils/request'
|
||||
import { useAdminApiKeyStore } from '../admin-api-key'
|
||||
|
||||
const emptyPage = { items: [], total: 0, page: 1, per_page: 15 }
|
||||
|
||||
describe('useAdminApiKeyStore', () => {
|
||||
beforeEach(() => {
|
||||
setActivePinia(createPinia())
|
||||
vi.restoreAllMocks()
|
||||
})
|
||||
|
||||
describe('fetchAllKeys — enabled 查询参数契约', () => {
|
||||
it('enabled=true 应序列化为 1(后端期望 integer 0/1)', async () => {
|
||||
vi.mocked(api.get).mockResolvedValueOnce(emptyPage)
|
||||
|
||||
const store = useAdminApiKeyStore()
|
||||
store.filters.enabled = true
|
||||
await store.fetchAllKeys()
|
||||
|
||||
expect(api.get).toHaveBeenCalledWith(
|
||||
'/api/v1/admin/api-keys',
|
||||
expect.objectContaining({ enabled: 1 }),
|
||||
)
|
||||
})
|
||||
|
||||
it('enabled=false 应序列化为 0', async () => {
|
||||
vi.mocked(api.get).mockResolvedValueOnce(emptyPage)
|
||||
|
||||
const store = useAdminApiKeyStore()
|
||||
store.filters.enabled = false
|
||||
await store.fetchAllKeys()
|
||||
|
||||
expect(api.get).toHaveBeenCalledWith(
|
||||
'/api/v1/admin/api-keys',
|
||||
expect.objectContaining({ enabled: 0 }),
|
||||
)
|
||||
})
|
||||
|
||||
it('enabled=undefined 应保持 undefined(不触发筛选)', async () => {
|
||||
vi.mocked(api.get).mockResolvedValueOnce(emptyPage)
|
||||
|
||||
const store = useAdminApiKeyStore()
|
||||
await store.fetchAllKeys()
|
||||
|
||||
expect(api.get).toHaveBeenCalledWith(
|
||||
'/api/v1/admin/api-keys',
|
||||
expect.objectContaining({ enabled: undefined }),
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('toggleUserApiKeyEnabled — 请求体字段名契约', () => {
|
||||
it('应发送 api_key_enabled 字段(后端 UserController::updateApiKeyEnabled 读取该字段)', async () => {
|
||||
vi.mocked(api.patch).mockResolvedValueOnce(undefined)
|
||||
vi.mocked(api.get).mockResolvedValueOnce(emptyPage)
|
||||
|
||||
const store = useAdminApiKeyStore()
|
||||
await store.toggleUserApiKeyEnabled(42, true)
|
||||
|
||||
expect(api.patch).toHaveBeenCalledWith(
|
||||
'/api/v1/users/42/api-key-enabled',
|
||||
{ api_key_enabled: true },
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -21,7 +21,7 @@ export const useAdminApiKeyStore = defineStore('admin-api-key', () => {
|
||||
page: pagination.page,
|
||||
per_page: pagination.per_page,
|
||||
user_id: filters.user_id,
|
||||
enabled: filters.enabled,
|
||||
enabled: filters.enabled === undefined ? undefined : filters.enabled ? 1 : 0,
|
||||
})
|
||||
keys.value = data.items
|
||||
pagination.total = data.total
|
||||
@@ -57,7 +57,7 @@ export const useAdminApiKeyStore = defineStore('admin-api-key', () => {
|
||||
|
||||
async function toggleUserApiKeyEnabled(userId: number, enabled: boolean) {
|
||||
try {
|
||||
await api.patch(`/api/v1/users/${userId}/api-key-enabled`, { enabled })
|
||||
await api.patch(`/api/v1/users/${userId}/api-key-enabled`, { api_key_enabled: enabled })
|
||||
await fetchAllKeys()
|
||||
} catch (err: unknown) {
|
||||
const msg = err instanceof Error ? err.message : '操作失败'
|
||||
|
||||
Reference in New Issue
Block a user