diff --git a/furniture-3d-system/src/app/intake/sample-progress/components/SampleProgressEditorDrawer.test.tsx b/furniture-3d-system/src/app/intake/sample-progress/components/SampleProgressEditorDrawer.test.tsx
index 638f8fe6..f29d6b1f 100644
--- a/furniture-3d-system/src/app/intake/sample-progress/components/SampleProgressEditorDrawer.test.tsx
+++ b/furniture-3d-system/src/app/intake/sample-progress/components/SampleProgressEditorDrawer.test.tsx
@@ -101,6 +101,83 @@ describe('SampleProgressEditorDrawer', () => {
await waitFor(() => expect(onSaved).toHaveBeenCalledWith(item))
})
+ it('passes the supply-chain permission scope when editing and creating records', async () => {
+ fetchMock.mockResolvedValue({
+ ok: true,
+ json: async () => ({ data: item }),
+ } as Response)
+
+ const editView = render(
+ ,
+ )
+
+ fireEvent.change(screen.getByLabelText('颜色'), { target: { value: '黑色' } })
+ fireEvent.click(screen.getByRole('button', { name: '保存' }))
+
+ await waitFor(() => expect(fetchMock).toHaveBeenCalledWith(
+ '/api/intake/sample-progress/sample-1?permissionScope=supply-chain',
+ expect.objectContaining({ method: 'PUT' }),
+ ))
+
+ editView.unmount()
+ fetchMock.mockClear()
+
+ render(
+ ,
+ )
+
+ fireEvent.change(screen.getByLabelText('开款编号'), { target: { value: 'KY20260802' } })
+ fireEvent.click(screen.getByRole('button', { name: '保存' }))
+
+ await waitFor(() => expect(fetchMock).toHaveBeenCalledWith(
+ '/api/intake/sample-progress?permissionScope=supply-chain',
+ expect.objectContaining({ method: 'POST' }),
+ ))
+ })
+
+ it('passes the supply-chain permission scope when loading OA prefill data', async () => {
+ fetchMock.mockResolvedValue({
+ ok: true,
+ json: async () => ({
+ data: {
+ brand: '测试品牌',
+ designer: '设计师甲',
+ imageUrl: null,
+ oaReachedAt: null,
+ purchaseOwner: '采购甲',
+ merchandiserOwner: '跟单甲',
+ },
+ }),
+ } as Response)
+
+ render(
+ ,
+ )
+
+ const openingCode = screen.getByLabelText('开款编号')
+ fireEvent.change(openingCode, { target: { value: 'KY20260803' } })
+ fireEvent.blur(openingCode)
+
+ await waitFor(() => expect(fetchMock).toHaveBeenCalledWith(
+ '/api/intake/sample-progress/oa-prefill?openingCode=KY20260803&permissionScope=supply-chain',
+ ))
+ })
+
it('requires a reason before saving a changed due date', () => {
render()