tools.test.ts•3.13 kB
import { describe, test, expect, vi, beforeEach } from 'vitest';
import { getCurrentTimetableTool, getRecentChangesTool, getPlannedTimetableTool, findStationsTool } from '../tools/timetableTools.js';
import { timetableApi } from '../api/timetableApi.js';
vi.mock('../api/timetableApi.js', () => ({
timetableApi: {
getCurrentTimetable: vi.fn().mockResolvedValue('<timetable>Current Data</timetable>'),
getRecentChanges: vi.fn().mockResolvedValue('<timetable>Recent Changes</timetable>'),
getPlannedTimetable: vi.fn().mockResolvedValue('<timetable>Planned Data</timetable>'),
findStations: vi.fn().mockResolvedValue('<stations>Station Data</stations>')
}
}));
describe('Timetable Tools', () => {
beforeEach(() => {
vi.clearAllMocks();
});
describe('getCurrentTimetableTool', () => {
test('ruft timetableApi.getCurrentTimetable auf', async () => {
const args = { evaNo: '8000105' };
const result = await getCurrentTimetableTool.execute(args);
expect(timetableApi.getCurrentTimetable).toHaveBeenCalledWith(args);
expect(result).toBe('<timetable>Current Data</timetable>');
});
test('validiert Eingabeparameter', async () => {
const invalidArgs = { evaNo: '' };
await expect(getCurrentTimetableTool.execute(invalidArgs)).rejects.toThrow();
});
});
describe('getRecentChangesTool', () => {
test('ruft timetableApi.getRecentChanges auf', async () => {
const args = { evaNo: '8000105' };
const result = await getRecentChangesTool.execute(args);
expect(timetableApi.getRecentChanges).toHaveBeenCalledWith(args);
expect(result).toBe('<timetable>Recent Changes</timetable>');
});
});
describe('getPlannedTimetableTool', () => {
test('ruft timetableApi.getPlannedTimetable auf', async () => {
const args = { evaNo: '8000105', date: '230401', hour: '14' };
const result = await getPlannedTimetableTool.execute(args);
expect(timetableApi.getPlannedTimetable).toHaveBeenCalledWith(args);
expect(result).toBe('<timetable>Planned Data</timetable>');
});
test('validiert Datumsformat', async () => {
const invalidArgs = { evaNo: '8000105', date: '2304', hour: '14' };
await expect(getPlannedTimetableTool.execute(invalidArgs)).rejects.toThrow();
});
test('validiert Stundenformat', async () => {
const invalidArgs = { evaNo: '8000105', date: '230401', hour: '24' };
await expect(getPlannedTimetableTool.execute(invalidArgs)).rejects.toThrow();
});
});
describe('findStationsTool', () => {
test('ruft timetableApi.findStations auf', async () => {
const args = { pattern: 'Frankfurt' };
const result = await findStationsTool.execute(args);
expect(timetableApi.findStations).toHaveBeenCalledWith(args);
expect(result).toBe('<stations>Station Data</stations>');
});
});
});