mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-30 12:18:11 +00:00
New Transit Agents admin table (name, valid-from/to, active/suspended, validity badge) — DJ assign step now picks from it, active+valid only.
This commit is contained in:
@@ -26,6 +26,7 @@ describe('ContractClearanceService — transit assignee', () => {
|
||||
transitAssigneeRequested: jest.Mock;
|
||||
transitAssigneeAssigned: jest.Mock;
|
||||
};
|
||||
let transitAgentsService: { getAssignable: jest.Mock };
|
||||
let service: ContractClearanceService;
|
||||
|
||||
const cycle = (over: Record<string, unknown> = {}) => ({
|
||||
@@ -45,6 +46,9 @@ describe('ContractClearanceService — transit assignee', () => {
|
||||
transitAssigneeRequested: jest.fn(),
|
||||
transitAssigneeAssigned: jest.fn(),
|
||||
};
|
||||
transitAgentsService = {
|
||||
getAssignable: jest.fn().mockResolvedValue({ id: 'agent-1', name: 'Ahmed Bourhan' }),
|
||||
};
|
||||
service = new ContractClearanceService(
|
||||
repo as never,
|
||||
contractsService as never,
|
||||
@@ -56,6 +60,7 @@ describe('ContractClearanceService — transit assignee', () => {
|
||||
{} as never,
|
||||
{} as never,
|
||||
notifier as never,
|
||||
transitAgentsService as never,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -79,8 +84,9 @@ describe('ContractClearanceService — transit assignee', () => {
|
||||
cycle({ transitAssigneeRequestedAt: new Date() }),
|
||||
);
|
||||
|
||||
await service.assignTransitAssignee('ctr-1', ' Ahmed Bourhan ', 'dj-1');
|
||||
await service.assignTransitAssignee('ctr-1', 'agent-1', 'dj-1');
|
||||
|
||||
expect(transitAgentsService.getAssignable).toHaveBeenCalledWith('agent-1');
|
||||
const patch = repo.updateCycle.mock.calls[0][1];
|
||||
expect(patch.transitAssigneeName).toBe('Ahmed Bourhan');
|
||||
expect(patch.transitAssigneeAssignedByUserId).toBe('dj-1');
|
||||
@@ -98,8 +104,12 @@ describe('ContractClearanceService — transit assignee', () => {
|
||||
transitAssigneeName: 'Ahmed Bourhan',
|
||||
}),
|
||||
);
|
||||
transitAgentsService.getAssignable.mockResolvedValue({
|
||||
id: 'agent-2',
|
||||
name: 'Fatouma Ali',
|
||||
});
|
||||
|
||||
await service.assignTransitAssignee('ctr-1', 'Fatouma Ali', 'dj-1');
|
||||
await service.assignTransitAssignee('ctr-1', 'agent-2', 'dj-1');
|
||||
|
||||
expect(notifier.transitAssigneeAssigned).toHaveBeenCalledWith(
|
||||
expect.anything(),
|
||||
@@ -108,19 +118,23 @@ describe('ContractClearanceService — transit assignee', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('refuses an empty name', async () => {
|
||||
it('refuses a suspended or out-of-window agent', async () => {
|
||||
repo.currentCycle.mockResolvedValue(
|
||||
cycle({ transitAssigneeRequestedAt: new Date() }),
|
||||
);
|
||||
transitAgentsService.getAssignable.mockRejectedValue(
|
||||
new BadRequestException('suspended'),
|
||||
);
|
||||
await expect(
|
||||
service.assignTransitAssignee('ctr-1', ' ', 'dj-1'),
|
||||
service.assignTransitAssignee('ctr-1', 'agent-1', 'dj-1'),
|
||||
).rejects.toBeInstanceOf(BadRequestException);
|
||||
});
|
||||
|
||||
it('refuses before Ethiopia has asked', async () => {
|
||||
await expect(
|
||||
service.assignTransitAssignee('ctr-1', 'Ahmed Bourhan', 'dj-1'),
|
||||
service.assignTransitAssignee('ctr-1', 'agent-1', 'dj-1'),
|
||||
).rejects.toThrow(/not requested/i);
|
||||
expect(transitAgentsService.getAssignable).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user