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,
|
page: pagination.page,
|
||||||
per_page: pagination.per_page,
|
per_page: pagination.per_page,
|
||||||
user_id: filters.user_id,
|
user_id: filters.user_id,
|
||||||
enabled: filters.enabled,
|
enabled: filters.enabled === undefined ? undefined : filters.enabled ? 1 : 0,
|
||||||
})
|
})
|
||||||
keys.value = data.items
|
keys.value = data.items
|
||||||
pagination.total = data.total
|
pagination.total = data.total
|
||||||
@@ -57,7 +57,7 @@ export const useAdminApiKeyStore = defineStore('admin-api-key', () => {
|
|||||||
|
|
||||||
async function toggleUserApiKeyEnabled(userId: number, enabled: boolean) {
|
async function toggleUserApiKeyEnabled(userId: number, enabled: boolean) {
|
||||||
try {
|
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()
|
await fetchAllKeys()
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
const msg = err instanceof Error ? err.message : '操作失败'
|
const msg = err instanceof Error ? err.message : '操作失败'
|
||||||
|
|||||||
Reference in New Issue
Block a user