From bb195610fd71f0729b4cf744696783db0a1438df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=87=E7=9D=BF=20=E5=BC=A0?= Date: Thu, 17 Sep 2026 00:06:27 +0800 Subject: [PATCH] fix role permission API requests --- frontend/src/api/organizations.js | 6 +++++ frontend/src/api/organizations.test.js | 34 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 frontend/src/api/organizations.test.js diff --git a/frontend/src/api/organizations.js b/frontend/src/api/organizations.js index ec01073b..63aa0a56 100644 --- a/frontend/src/api/organizations.js +++ b/frontend/src/api/organizations.js @@ -12,5 +12,11 @@ export const organizationsApi = { }, listRoles() { return request.get('/roles') + }, + listPermissions() { + return request.get('/permissions') + }, + updateRole(id, data) { + return request.put(`/roles/${id}`, data) } } diff --git a/frontend/src/api/organizations.test.js b/frontend/src/api/organizations.test.js new file mode 100644 index 00000000..4c71a121 --- /dev/null +++ b/frontend/src/api/organizations.test.js @@ -0,0 +1,34 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { organizationsApi } from './organizations' + +const request = vi.hoisted(() => ({ + get: vi.fn(), + put: vi.fn() +})) + +vi.mock('./index', () => ({ default: request })) + +describe('organizations API role permissions', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it('loads the permission catalog from the permissions endpoint', async () => { + request.get.mockResolvedValue({ data: [{ code: 'inventory.read' }] }) + + const response = await organizationsApi.listPermissions() + + expect(request.get).toHaveBeenCalledWith('/permissions') + expect(response).toEqual({ data: [{ code: 'inventory.read' }] }) + }) + + it('updates a role through its role endpoint', async () => { + const payload = { name: '仓库管理员', enabled: true, permission_codes: ['inventory.read'] } + request.put.mockResolvedValue({ data: null }) + + const response = await organizationsApi.updateRole(3, payload) + + expect(request.put).toHaveBeenCalledWith('/roles/3', payload) + expect(response).toEqual({ data: null }) + }) +})