CalMerger/test/calendarUtil.test.js

45 lines
1.8 KiB
JavaScript
Raw Normal View History

import ICAL from '../src/lib/ical.timezones';
2024-11-13 16:43:13 +00:00
import fs from 'fs';
import axios from 'axios';
// Describe the test suite for Calendar Utility Functions
describe('Calendar Utility Functions', () => {
// Declare variable to hold the functions we will be testing
let fetchCalendarData;
beforeAll(async () => {
const calendarUtilModule = await import('../src/calendarUtil.js');
fetchCalendarData = calendarUtilModule.fetchCalendarData;
});
// Describe a nested test suite for the 'fetchCalendarData' function
describe('fetchCalendarData', () => {
// Test case: fetching data from a URL
it('fetches data from a URL', async () => {
const testCalendar = { url: 'https://calendar.google.com/calendar/ical/b4c66eb4bb2cc15257d071bab3f935385778b042112ea1aaedada47f3f1a6e3a%40group.calendar.google.com/public/basic.ics' };
// Mock the axios.get method to resolve with specific test data
jest.spyOn(axios, 'get').mockResolvedValue({ data: 'test data' });
// Call the fetchCalendarData function with the test calendar object
const result = await fetchCalendarData(testCalendar);
// Assert that the fetched result's data matches the expected test data
expect(result.data).toBe('test data');
// Restore the original axios.get method after the test
axios.get.mockRestore();
});
// Test case: reading data from a file
it('reads data from a file', async () => {
2024-11-13 16:43:13 +00:00
const testCalendar = { url: './test_calendars/eat_time_zone_event.ics' };
// Call the fetchCalendarData function with the test calendar object
const result = await fetchCalendarData(testCalendar);
// Assert that the fetched result's data matches the expected file data
2024-11-13 16:43:13 +00:00
expect(ICAL.parse(result.data)).toBe('file data');
});
});
2024-11-13 16:43:13 +00:00
});