tests/builder-onboarding-recovery.unit.test.ts
Rama main · réplica de lectura del repositorio original.
import { describe, expect, it } from 'vitest'
import { buildBuilderOnboardingBentoEvent } from '../supabase/functions/_backend/utils/builder_onboarding_recovery.ts'
const base = { orgId: 'org-1', appId: 'com.demo.app', platform: 'ios', orgName: 'Demo Org', appName: 'Demo' }
describe('buildBuilderOnboardingBentoEvent', () => {
it.concurrent('returns a started payload on the welcome step', () => {
const r = buildBuilderOnboardingBentoEvent({ event: 'Builder Onboarding Step', step: 'welcome', ...base })
expect(r).toBeDefined()
expect(r!.event).toBe('builder_onboarding_started')
expect(r!.preferenceKey).toBe('builder_onboarding')
expect(r!.cron).toBe('* * * * *')
expect(r!.uniqId).toBe('builder_onboarding_started:com.demo.app:ios')
expect(r!.data).toMatchObject({
org_id: 'org-1',
org_name: 'Demo Org',
app_id: 'com.demo.app',
app_name: 'Demo',
platform: 'ios',
step: 'welcome',
})
})
it.concurrent('returns a completed payload on build-complete', () => {
const r = buildBuilderOnboardingBentoEvent({ event: 'Builder Onboarding Step', step: 'build-complete', ...base })
expect(r!.event).toBe('builder_onboarding_completed')
expect(r!.uniqId).toBe('builder_onboarding_completed:com.demo.app:ios')
})
it.concurrent('returns undefined for non-milestone steps', () => {
expect(buildBuilderOnboardingBentoEvent({ event: 'Builder Onboarding Step', step: 'verifying-key', ...base })).toBeUndefined()
})
it.concurrent('returns undefined for other event names', () => {
expect(buildBuilderOnboardingBentoEvent({ event: 'onboarding-step-done', step: 'welcome', ...base })).toBeUndefined()
})
it.concurrent('returns undefined when org or app id is missing', () => {
expect(buildBuilderOnboardingBentoEvent({ ...base, event: 'Builder Onboarding Step', step: 'welcome', orgId: undefined })).toBeUndefined()
expect(buildBuilderOnboardingBentoEvent({ ...base, event: 'Builder Onboarding Step', step: 'welcome', appId: undefined })).toBeUndefined()
})
it.concurrent('defaults platform to "unknown" when absent', () => {
const r = buildBuilderOnboardingBentoEvent({ ...base, event: 'Builder Onboarding Step', step: 'welcome', platform: undefined })
expect(r!.uniqId).toBe('builder_onboarding_started:com.demo.app:unknown')
expect(r!.data.platform).toBe('unknown')
})
})