nxtgauge-frontend-solid/src/lib/guided-tour-content.test.ts

50 lines
1.9 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { resolveRoleApprovedTourSteps, resolveWelcomeTourSteps } from './guided-tour-content';
describe('resolveWelcomeTourSteps', () => {
it('uses runtime-config welcome steps when provided', () => {
const steps = resolveWelcomeTourSteps({
welcome: [
{ title: 'A', body: 'B' },
{ title: 'C', body: 'D' },
],
});
expect(steps).toHaveLength(2);
expect(steps[0].title).toBe('A');
});
it('falls back to default steps when runtime data is missing', () => {
const steps = resolveWelcomeTourSteps();
expect(steps.length).toBeGreaterThan(0);
});
});
describe('resolveRoleApprovedTourSteps', () => {
it('returns role-specific defaults for primary roles', () => {
expect(resolveRoleApprovedTourSteps('COMPANY').length).toBeGreaterThan(0);
expect(resolveRoleApprovedTourSteps('CUSTOMER').length).toBeGreaterThan(0);
expect(resolveRoleApprovedTourSteps('JOB_SEEKER').length).toBeGreaterThan(0);
});
it('returns professional defaults for non-primary roles', () => {
const steps = resolveRoleApprovedTourSteps('PHOTOGRAPHER');
expect(steps.length).toBeGreaterThan(0);
expect(steps[0].title.toLowerCase()).toContain('photographer');
});
it('uses runtime role override when present', () => {
const steps = resolveRoleApprovedTourSteps('TUTOR', {
roles: {
TUTOR: [{ title: 'Tutor Custom', body: 'Custom flow' }],
},
});
expect(steps).toEqual([{ title: 'Tutor Custom', body: 'Custom flow' }]);
});
it('uses runtime role approved default when specific role override is absent', () => {
const steps = resolveRoleApprovedTourSteps('MAKEUP_ARTIST', {
role_approved_default: [{ title: 'Default Custom', body: 'Default flow' }],
});
expect(steps).toEqual([{ title: 'Default Custom', body: 'Default flow' }]);
});
});