81 lines
2.2 KiB
TypeScript
81 lines
2.2 KiB
TypeScript
/** @jest-environment node */
|
|
|
|
import { getServerSession } from 'next-auth'
|
|
import { prisma } from '@/lib/prisma'
|
|
import { isSuperAdmin } from '@/lib/department-permission'
|
|
import { savePermissionPackItems } from '@/lib/user-permission-inherit'
|
|
|
|
jest.mock('next-auth', () => ({
|
|
getServerSession: jest.fn(),
|
|
}))
|
|
|
|
jest.mock('@/lib/auth', () => ({
|
|
authOptions: {},
|
|
}))
|
|
|
|
jest.mock('@/lib/prisma', () => ({
|
|
prisma: {
|
|
materialPermissionPack: {
|
|
findUnique: jest.fn(),
|
|
},
|
|
},
|
|
}))
|
|
|
|
jest.mock('@/lib/department-permission', () => ({
|
|
getAllMaterialTypes: jest.fn(),
|
|
isSuperAdmin: jest.fn(),
|
|
}))
|
|
|
|
jest.mock('@/lib/user-permission-inherit', () => ({
|
|
ensureDefaultPermissionPacks: jest.fn(),
|
|
packItemsToMap: jest.fn(),
|
|
savePermissionPackItems: jest.fn(),
|
|
}))
|
|
|
|
jest.mock('@/lib/permission-groups', () => ({
|
|
findConflictingDepartmentGroup: jest.fn(),
|
|
makePermissionGroupSlug: jest.fn(),
|
|
seedDefaultGroupDepartments: jest.fn(),
|
|
}))
|
|
|
|
const { PUT } = require('@/app/api/organization/permission-groups/route') as typeof import('@/app/api/organization/permission-groups/route')
|
|
|
|
describe('/api/organization/permission-groups 保存权限', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks()
|
|
;(getServerSession as jest.Mock).mockResolvedValue({ user: { id: 'super-admin' } })
|
|
;(isSuperAdmin as jest.Mock).mockResolvedValue(true)
|
|
;(prisma.materialPermissionPack.findUnique as jest.Mock).mockResolvedValue({
|
|
id: 'visual-pack',
|
|
slug: 'visual',
|
|
name: '视觉',
|
|
})
|
|
})
|
|
|
|
test('任务详情编辑图片勾选值应原样保存,不能回退为 false', async () => {
|
|
const response = await PUT({
|
|
json: async () => ({
|
|
action: 'save-pack',
|
|
slug: 'visual',
|
|
permissions: [
|
|
{
|
|
materialType: '任务-详情',
|
|
canView: true,
|
|
canDownload: true,
|
|
canDownloadSource: true,
|
|
canEditAssets: true,
|
|
},
|
|
],
|
|
}),
|
|
} as never)
|
|
|
|
expect(response.status).toBe(200)
|
|
expect(savePermissionPackItems).toHaveBeenCalledWith('visual', [
|
|
expect.objectContaining({
|
|
materialType: '任务-详情',
|
|
canEditAssets: true,
|
|
}),
|
|
])
|
|
})
|
|
})
|