UNPKG

@v4fire/client

Version:

V4Fire client core library

139 lines (103 loc) 3.8 kB
// @ts-check /*! * V4Fire Client Core * https://github.com/V4Fire/Client * * Released under the MIT license * https://github.com/V4Fire/Client/blob/master/LICENSE */ const h = include('tests/helpers').default; /** * Starts a test * * @param {Playwright.Page} page * @param {object} params * @returns {void} */ module.exports = (page, {browser, contextOpts}) => { const initialUrl = page.url(); let dummyComponent, session, context; describe('`core/session`', () => { beforeEach(async () => { context = await browser.newContext(contextOpts); page = await context.newPage(); await page.goto(initialUrl); dummyComponent = await h.component.waitForComponent(page, '.b-dummy'); session = await dummyComponent.evaluateHandle(({modules: {session}}) => session); }); afterEach(() => context.close()); describe('set', () => { it('stores a session', async () => { await session.evaluate((ctx) => ctx.set('authToken', {someParam: 1})); const testVal = await session.evaluate((ctx) => ctx.get()); expect(testVal).toEqual({auth: 'authToken', params: {someParam: 1}}); }); it('emits a `set` event', async () => { const eventPr = session.evaluate(({emitter}) => new Promise((res) => emitter.on('set', res))); await session.evaluate((ctx) => ctx.set('authToken', {someParam: 1})); await expectAsync(eventPr).toBeResolvedTo({auth: 'authToken', params: {someParam: 1}}); }); }); describe('get', () => { it('returns session data if the session was initialized', async () => { await session.evaluate((ctx) => ctx.set('authToken', {someParam: 1})); const testVal = await session.evaluate((ctx) => ctx.get()); expect(testVal).toEqual({auth: 'authToken', params: {someParam: 1}}); }); it('returns `undefined` if the session was not initialized', async () => { const testVal = await session.evaluate((ctx) => ctx.get()); expect(testVal).toEqual({auth: undefined, params: undefined}); }); }); describe('clear', () => { it('clears the stored session', async () => { await session.evaluate((ctx) => ctx.set('authToken', {someParam: 1})); await session.evaluate((ctx) => ctx.clear()); const testVal = await session.evaluate((ctx) => ctx.get()); expect(testVal).toEqual({auth: undefined, params: undefined}); }); it('emits a `clear` event', async () => { const eventPr = session.evaluate(({emitter}) => new Promise((res) => emitter.on('clear', res))); await session.evaluate((ctx) => ctx.set('authToken', {someParam: 1})); await session.evaluate((ctx) => ctx.clear()); await expectAsync(eventPr).toBeResolved(); }); }); describe('match', () => { beforeEach(() => session.evaluate((ctx) => ctx.set('authToken', {someParam: 1}))); it('returns `true` if the current session and the provided session are the same', async () => { const testVal = await session.evaluate((ctx) => ctx.match('authToken', {someParam: 1})); expect(testVal).toBeTrue(); }); it('returns `false` if the current session and the provided session are not the same', async () => { const testVal = await session.evaluate((ctx) => ctx.match('newAuthToken', {someParam: 1})); expect(testVal).toBeFalse(); }); }); describe('isExists', () => { it('returns `true` is the session exists', async () => { await session.evaluate((ctx) => ctx.set('authToken', {someParam: 1})); const testVal = await session.evaluate((ctx) => ctx.isExists()); expect(testVal).toBeTrue(); }); it('returns `false` is the session does not exist', async () => { const testVal = await session.evaluate((ctx) => ctx.isExists()); expect(testVal).toBeFalse(); }); }); }); };