import {shouldDisplayOnboarding} from '../../../src/lib/onboarding'; describe('unit test lib/onboarding.js', () => { const startDate = new Date(); const endDate = new Date(startDate); endDate.setDate(endDate.getDate() + 7); let user; let permissions; beforeEach(() => { process.env.ONBOARDING_TEST_ACTIVE = 'true'; process.env.ONBOARDING_TESTING_STARTING_DATE = startDate.toJSON().split('T')[0]; process.env.ONBOARDING_TESTING_ENDING_DATE = endDate.toJSON().split('T')[0]; user = {id: 2, dateJoined: startDate.toJSON(), banned: false}; permissions = {admin: false, mute_status: {}, new_scratcher: true}; }); describe('#shouldDisplayOnboarding', () => { describe('when user is eligible to view onboarding journeys', () => { describe('when there is time frame for A/B testing', () => { test('returns true', () => { expect(shouldDisplayOnboarding(user, permissions)).toBeTruthy(); }); }); }); describe('when user is not eligible to view onboarding journeys', () => { describe('when feature flag is toggled off', () => { test('returns false', () => { process.env.ONBOARDING_TEST_ACTIVE = 'false'; expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); describe('when user is in other testing group', () => { test('returns false', () => { user.id = 1; expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); describe('when user is registered outside of time frame', () => { test('returns false', () => { const currentDate = new Date(); currentDate.setDate(currentDate.getDate() - 1); user.dateJoined = currentDate.toJSON(); expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); describe('when user is admin', () => { test('returns false', () => { permissions.admin = true; expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); describe('when user is muted', () => { test('returns false', () => { permissions.mute_status = {showWarning: true}; expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); describe('when user is banned', () => { test('returns false', () => { user.banned = true; expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); describe('when user is empty', () => { test('returns false', () => { user = {}; expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); describe('when permissions is empty', () => { test('returns false', () => { permissions = {}; expect(shouldDisplayOnboarding(user, permissions)).toBeFalsy(); }); }); }); }); });