databag/app/sdk/__tests__/ring.tests.ts
2025-03-09 22:30:27 -07:00

46 lines
1.3 KiB
TypeScript

import { Call } from '../src/types';
import { RingModule } from '../src/ring';
import { MockLinkModule } from '../__mocks__/link';
import { waitFor } from '../__mocks__/waitFor';
import { ConsoleLogging } from '../src/logging';
jest.mock('../src/net/fetchUtil', () => {
const fn = jest.fn().mockImplementation((url: string, options: { method: string, body: string }) => {
console.log(url, options);
return Promise.resolve({ state: 200, json: () => {} });
});
return {
fetchWithTimeout: fn,
checkResponse: () => {},
}
});
const mockLink = new MockLinkModule();
jest.mock('../src/link', () => {
return {
Connection: jest.fn().mockImplementation(() => {
return mockLink;
})
}
})
test('rings correctly', async () => {
let calling = [] as { cardId: string, callId: string }[];
const endContactCall = async (cardId: string, callId: string) => {
console.log("ending");
};
const ringing = (calls: { cardId: string, callId: string }[]) => {
calling = calls;
};
const log = new ConsoleLogging();
const ringModule = new RingModule(log, endContactCall);
ringModule.addRingingListener(ringing);
ringModule.ring({ cardId: 'card1', callId: 'call1', calleeToken: 'token1', ice: [] });
await waitFor(() => calling.length === 1);
await waitFor(() => calling.length === 0, 10);
ringModule.close();
}, 15000);