Ctrl K
ComunidadGuías…

tests/builder-onboarding-recovery.unit.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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')
  })
})