刘光辉
3 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { beforeEach, describe, expect, it, vi } from 'vitest';
 
const requestMocks = vi.hoisted(() => ({
  get: vi.fn(),
  post: vi.fn(),
}));
 
vi.mock('#/api/request', () => ({
  defHttp: {
    get: requestMocks.get,
    post: requestMocks.post,
  },
}));
 
// eslint-disable-next-line import/first -- request module must be mocked before loading the API wrapper.
import { createRecordsBatch, executeSharedFill, getRecordByTestWorkItem, previewSharedFill } from './records';
 
describe('eln record API', () => {
  beforeEach(() => vi.clearAllMocks());
 
  it('uses the test-work-item route for the current record', () => {
    getRecordByTestWorkItem('item/1');
 
    expect(requestMocks.get).toHaveBeenCalledWith({
      url: '/api/eln/records/byTestWorkItem/item%2F1',
    });
  });
 
  it('sends test-work-item IDs for batch creation and shared-fill preview', () => {
    createRecordsBatch({ operationCode: 'op-1', testWorkItemIds: ['item-1'] });
    previewSharedFill({ testWorkItemIds: ['item-1', 'item-2'] });
    executeSharedFill({ operationCode: 'op-2', previewToken: 'preview-1', targets: [], testWorkItemIds: [], values: [] });
 
    expect(requestMocks.post).toHaveBeenNthCalledWith(1, {
      data: { operationCode: 'op-1', testWorkItemIds: ['item-1'] },
      url: '/api/eln/records/batch',
    });
    expect(requestMocks.post).toHaveBeenNthCalledWith(2, {
      data: { testWorkItemIds: ['item-1', 'item-2'] },
      url: '/api/eln/records/sharedFill/preview',
    });
    expect(requestMocks.post).toHaveBeenNthCalledWith(3, {
      data: { operationCode: 'op-2', previewToken: 'preview-1', targets: [], testWorkItemIds: [], values: [] },
      url: '/api/eln/records/sharedFill/execute',
    });
  });
});