13d6e487dSEvan Baconimport { vol } from 'memfs'; 23d6e487dSEvan Bacon 3*c4ef02aeSEvan Baconimport { resolvePortAsync } from '../../utils/port'; 43d6e487dSEvan Baconimport { resolveBundlerPropsAsync } from '../resolveBundlerProps'; 53d6e487dSEvan Bacon 6*c4ef02aeSEvan Baconconst asMock = <T extends (...args: any[]) => any>(fn: T): jest.MockedFunction<T> => 7*c4ef02aeSEvan Bacon fn as jest.MockedFunction<T>; 8*c4ef02aeSEvan Bacon 9*c4ef02aeSEvan Baconjest.mock('../../utils/port'); 103d6e487dSEvan Bacon 113d6e487dSEvan Bacondescribe(resolveBundlerPropsAsync, () => { 123d6e487dSEvan Bacon afterEach(() => vol.reset()); 133d6e487dSEvan Bacon 143d6e487dSEvan Bacon it(`asserts bad args`, async () => { 153d6e487dSEvan Bacon await expect( 163d6e487dSEvan Bacon resolveBundlerPropsAsync('/', { bundler: false, port: 3000 }) 173d6e487dSEvan Bacon ).rejects.toThrowError(/mutually exclusive arguments/); 183d6e487dSEvan Bacon }); 19*c4ef02aeSEvan Bacon it(`skips bundling if the port is busy`, async () => { 20*c4ef02aeSEvan Bacon asMock(resolvePortAsync).mockResolvedValueOnce(null); 21*c4ef02aeSEvan Bacon 22*c4ef02aeSEvan Bacon expect(await resolveBundlerPropsAsync('/', {})).toEqual({ 23*c4ef02aeSEvan Bacon port: 8081, 24*c4ef02aeSEvan Bacon shouldStartBundler: false, 25*c4ef02aeSEvan Bacon }); 26*c4ef02aeSEvan Bacon }); 273d6e487dSEvan Bacon it(`resolves headless port`, async () => { 283d6e487dSEvan Bacon expect( 293d6e487dSEvan Bacon await resolveBundlerPropsAsync('/', { 303d6e487dSEvan Bacon port: 3000, 313d6e487dSEvan Bacon }) 323d6e487dSEvan Bacon ).toEqual({ 333d6e487dSEvan Bacon port: 3000, 343d6e487dSEvan Bacon shouldStartBundler: true, 353d6e487dSEvan Bacon }); 363d6e487dSEvan Bacon }); 373d6e487dSEvan Bacon it(`resolves default port`, async () => { 38*c4ef02aeSEvan Bacon asMock(resolvePortAsync).mockResolvedValueOnce(19006); 39*c4ef02aeSEvan Bacon 403d6e487dSEvan Bacon expect( 413d6e487dSEvan Bacon await resolveBundlerPropsAsync('/', { 423d6e487dSEvan Bacon bundler: true, 433d6e487dSEvan Bacon }) 443d6e487dSEvan Bacon ).toEqual({ 45*c4ef02aeSEvan Bacon port: 19006, 463d6e487dSEvan Bacon shouldStartBundler: true, 473d6e487dSEvan Bacon }); 483d6e487dSEvan Bacon }); 493d6e487dSEvan Bacon}); 50