Squash commmits
This commit is contained in:
107
src/test/meeting.test.ts
Normal file
107
src/test/meeting.test.ts
Normal file
@ -0,0 +1,107 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { fetchCrabfitData, filterMemberData, findMeetingOptions } from '$lib/meeting';
|
||||
|
||||
// vi.mock('node-fetch', async () => ({
|
||||
// default: vi.fn(() =>
|
||||
// Promise.resolve({
|
||||
// json: () => Promise.resolve(mockData)
|
||||
// })
|
||||
// )
|
||||
// }));
|
||||
const mockData = [
|
||||
{
|
||||
name: 'Alice',
|
||||
availability: ['1100-1', '1115-1', '1130-1', '1100-2'],
|
||||
created_at: 1000000000
|
||||
},
|
||||
{
|
||||
name: 'Bob',
|
||||
availability: ['1100-1', '1400-1', '1500-1'],
|
||||
created_at: 1000000001
|
||||
},
|
||||
// Charlie has no times on Monday, but does on Tuesdays
|
||||
{
|
||||
name: 'Charlie',
|
||||
availability: ['2000-1', '1100-2'],
|
||||
created_at: 1000000002
|
||||
}
|
||||
];
|
||||
|
||||
const testData = [
|
||||
{
|
||||
name: 'B',
|
||||
availability: ['0900-1', '0915-1', '0930-1', '0945-1', '1000-1', '1015-1', '1030-1', '1045-1'],
|
||||
created_at: 1753176466
|
||||
},
|
||||
{
|
||||
name: 'A',
|
||||
availability: ['0800-1', '0815-1', '0830-1', '0845-1', '0900-1', '0915-1', '0930-1', '0945-1'],
|
||||
created_at: 1753176450
|
||||
}
|
||||
];
|
||||
|
||||
const CRABFIT_TEST_API_URL = 'https://api.crab.fit/event/schedulertestdata-850919';
|
||||
|
||||
describe('findMeetingOptions', () => {
|
||||
it('returns options correctly', async () => {
|
||||
const options = await findMeetingOptions([mockData[0], mockData[1]], {
|
||||
days: ['Monday'],
|
||||
number: 1
|
||||
});
|
||||
expect(options).toEqual([{ 'Option 1': ['Monday', '1100'] }]);
|
||||
});
|
||||
|
||||
it('returns options correctly', async () => {
|
||||
const options = await findMeetingOptions([mockData[0], mockData[2]], {
|
||||
days: ['Tuesday'],
|
||||
number: 1
|
||||
});
|
||||
expect(options).toEqual([{ 'Option 1': ['Tuesday', '1100'] }]);
|
||||
});
|
||||
|
||||
it('returns no options for impossible constraints', async () => {
|
||||
const options = await findMeetingOptions([mockData[0], mockData[2]], {
|
||||
days: ['Monday'],
|
||||
number: 1
|
||||
});
|
||||
expect(options).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('filterMemberData', () => {
|
||||
it('filters member data', async () => {
|
||||
const members = ['A', 'B'];
|
||||
const result = await filterMemberData(members, testData);
|
||||
expect(result).toEqual(expect.arrayContaining(testData));
|
||||
});
|
||||
});
|
||||
|
||||
describe('fetchCrabfitData', () => {
|
||||
it('gets member data', async () => {
|
||||
expect(await fetchCrabfitData(CRABFIT_TEST_API_URL)).toEqual(testData);
|
||||
});
|
||||
});
|
||||
|
||||
describe('integration', () => {
|
||||
it('finds meetings with fetched data', async () => {
|
||||
const crabfitData = await fetchCrabfitData(CRABFIT_TEST_API_URL);
|
||||
const members = ['A', 'B'];
|
||||
const memberData = await filterMemberData(members, crabfitData);
|
||||
|
||||
const options = await findMeetingOptions(memberData, {
|
||||
days: ['Monday'],
|
||||
number: 1
|
||||
});
|
||||
expect(options).toEqual([{ 'Option 1': ['Monday', '0900'] }]);
|
||||
});
|
||||
it('finds meetings with test data', async () => {
|
||||
const members = ['A', 'B'];
|
||||
const memberData = await filterMemberData(members, testData);
|
||||
|
||||
const options = await findMeetingOptions(memberData, {
|
||||
days: ['Monday'],
|
||||
number: 1
|
||||
});
|
||||
expect(options).toEqual([{ 'Option 1': ['Monday', '0900'] }]);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user