update profile page
This commit is contained in:
@@ -5,6 +5,7 @@ import { nextTick } from 'vue'
|
|||||||
import { message } from 'ant-design-vue'
|
import { message } from 'ant-design-vue'
|
||||||
import { ApiError } from '@/types/api'
|
import { ApiError } from '@/types/api'
|
||||||
import { useUserStore } from '@/stores/user'
|
import { useUserStore } from '@/stores/user'
|
||||||
|
import { fakeJwtWithRole } from '@/test/helpers'
|
||||||
|
|
||||||
Object.defineProperty(window, 'matchMedia', {
|
Object.defineProperty(window, 'matchMedia', {
|
||||||
writable: true,
|
writable: true,
|
||||||
@@ -58,7 +59,7 @@ describe('Profile Page', () => {
|
|||||||
vi.mocked(api.get).mockResolvedValue(mockUser)
|
vi.mocked(api.get).mockResolvedValue(mockUser)
|
||||||
|
|
||||||
const store = useUserStore()
|
const store = useUserStore()
|
||||||
store.setToken('h.p.s', 'r.p.s', true)
|
store.setToken(fakeJwtWithRole('administrator'), 'r.p.s', true)
|
||||||
store.setUser({ ...mockUser })
|
store.setUser({ ...mockUser })
|
||||||
|
|
||||||
const { default: ProfilePage } = await import('../index.vue')
|
const { default: ProfilePage } = await import('../index.vue')
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { nextTick } from 'vue'
|
|||||||
import { message } from 'ant-design-vue'
|
import { message } from 'ant-design-vue'
|
||||||
import { useUserManageStore, type UserRecord } from '@/stores/user-manage'
|
import { useUserManageStore, type UserRecord } from '@/stores/user-manage'
|
||||||
import { useUserStore } from '@/stores/user'
|
import { useUserStore } from '@/stores/user'
|
||||||
|
import { fakeJwtWithRole } from '@/test/helpers'
|
||||||
|
|
||||||
// jsdom 不支持 matchMedia,Ant Design Vue 响应式布局需要
|
// jsdom 不支持 matchMedia,Ant Design Vue 响应式布局需要
|
||||||
Object.defineProperty(window, 'matchMedia', {
|
Object.defineProperty(window, 'matchMedia', {
|
||||||
@@ -202,8 +203,9 @@ describe('Users Page', () => {
|
|||||||
return Promise.resolve(mockPaginatedResponse) as never
|
return Promise.resolve(mockPaginatedResponse) as never
|
||||||
})
|
})
|
||||||
|
|
||||||
// 设置 admin 用户以显示操作按钮
|
// 设置 admin 用户以显示操作按钮(isAdmin 从 JWT 派生)
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
userStore.setToken(fakeJwtWithRole('administrator'), 'rt')
|
||||||
userStore.setUser({ id: 1, username: 'admin', email: 'a@a.com', role: 'administrator', status: 1 })
|
userStore.setUser({ id: 1, username: 'admin', email: 'a@a.com', role: 'administrator', status: 1 })
|
||||||
|
|
||||||
const { default: UsersPage } = await import('../index.vue')
|
const { default: UsersPage } = await import('../index.vue')
|
||||||
@@ -265,8 +267,9 @@ describe('Users Page', () => {
|
|||||||
const { api } = await import('@/utils/request')
|
const { api } = await import('@/utils/request')
|
||||||
vi.mocked(api.get).mockResolvedValue(mockPaginatedResponse)
|
vi.mocked(api.get).mockResolvedValue(mockPaginatedResponse)
|
||||||
|
|
||||||
// 设置非 admin 用户
|
// 设置非 admin 用户(JWT 中 role 为 accessor)
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
userStore.setToken(fakeJwtWithRole('accessor'), 'rt')
|
||||||
userStore.setUser({ id: 2, username: 'viewer', email: 'v@v.com', role: 'accessor', status: 1 })
|
userStore.setUser({ id: 2, username: 'viewer', email: 'v@v.com', role: 'accessor', status: 1 })
|
||||||
|
|
||||||
const { default: UsersPage } = await import('../index.vue')
|
const { default: UsersPage } = await import('../index.vue')
|
||||||
|
|||||||
Reference in New Issue
Block a user