73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import { TravelersController } from './travelers.controller';
|
|
import type { AuthenticatedUser } from '../../../../libs/auth/src';
|
|
|
|
describe('TravelersController', () => {
|
|
const currentUser: AuthenticatedUser = {
|
|
id: 'u1',
|
|
externalSubjectId: 'sub-1',
|
|
displayName: 'Alex',
|
|
email: 'a@example.com',
|
|
};
|
|
|
|
it('GET /trips/:tripId/travelers lists travelers', async () => {
|
|
const travelersService = { listTravelers: jest.fn().mockResolvedValue([]) };
|
|
const controller = new TravelersController(travelersService as never);
|
|
|
|
await expect(controller.list('t1')).resolves.toEqual([]);
|
|
expect(travelersService.listTravelers).toHaveBeenCalledWith('t1');
|
|
});
|
|
|
|
it('POST /trips/:tripId/travelers creates a traveler recorded by the current member', async () => {
|
|
const created = {
|
|
id: 'trav-1',
|
|
tripId: 't1',
|
|
displayName: 'Mila',
|
|
travelerType: 'CHILD',
|
|
};
|
|
const travelersService = {
|
|
createTraveler: jest.fn().mockResolvedValue(created),
|
|
};
|
|
const controller = new TravelersController(travelersService as never);
|
|
|
|
const dto = { displayName: 'Mila', travelerType: 'CHILD' as const };
|
|
await expect(controller.create('t1', currentUser, dto)).resolves.toEqual(
|
|
created,
|
|
);
|
|
expect(travelersService.createTraveler).toHaveBeenCalledWith(
|
|
't1',
|
|
dto,
|
|
'u1',
|
|
);
|
|
});
|
|
|
|
it('PATCH /trips/:tripId/travelers/:travelerId updates a traveler', async () => {
|
|
const updated = { id: 'trav-1', tripId: 't1', displayName: 'Mila Renamed' };
|
|
const travelersService = {
|
|
updateTraveler: jest.fn().mockResolvedValue(updated),
|
|
};
|
|
const controller = new TravelersController(travelersService as never);
|
|
|
|
await expect(
|
|
controller.update('t1', 'trav-1', { displayName: 'Mila Renamed' }),
|
|
).resolves.toEqual(updated);
|
|
expect(travelersService.updateTraveler).toHaveBeenCalledWith(
|
|
't1',
|
|
'trav-1',
|
|
{ displayName: 'Mila Renamed' },
|
|
);
|
|
});
|
|
|
|
it('DELETE /trips/:tripId/travelers/:travelerId removes a traveler', async () => {
|
|
const travelersService = {
|
|
removeTraveler: jest.fn().mockResolvedValue(undefined),
|
|
};
|
|
const controller = new TravelersController(travelersService as never);
|
|
|
|
await controller.remove('t1', 'trav-1');
|
|
expect(travelersService.removeTraveler).toHaveBeenCalledWith(
|
|
't1',
|
|
'trav-1',
|
|
);
|
|
});
|
|
});
|