import { findSameNamedTorrents, codeToFlag, sleep } from '@/utils'; import { mockTorrent } from './utils'; test('timeout', async () => { jest.useFakeTimers(); const fn = jest.fn(); sleep(1000).then(fn); expect(fn).not.toBeCalled(); jest.advanceTimersByTime(500); // HACK: force wait promise, // see https://stackoverflow.com/a/51132058/2806903 // and https://stackoverflow.com/a/52196951/2806903 await Promise.resolve(); expect(fn).not.toBeCalled(); jest.advanceTimersByTime(500); await Promise.resolve(); expect(fn).toBeCalled(); }); test('code to flag', () => { expect(codeToFlag('CN')).toMatchObject({ char: '🇨🇳', url: expect.stringContaining('1f1e8-1f1f3'), }); }); describe('find same named torrents', () => { const torrents = [ mockTorrent({ hash: '0', name: 'A', }), mockTorrent({ hash: '1', name: 'B', }), mockTorrent({ hash: '2', name: 'A', }), mockTorrent({ hash: '3', name: 'C', }), ]; test.each([ [[mockTorrent({ name: 'A' })], [torrents[0], torrents[2]]], [[mockTorrent({ name: 'B' })], [torrents[1]]], [[mockTorrent({ name: 'C' })], [torrents[3]]], [[mockTorrent({ hash: '0', name: 'A' })], [torrents[2]]], ])('case %#', (target, result) => { expect(findSameNamedTorrents(torrents, target)).toEqual(result); }); });