Ctrl K
ComunidadGuías…

tests/app-creator.unit.test.ts

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

Archivo original ↗Preguntar a KiBot
import { describe, expect, it } from 'vitest'
import {
  addAppCreatorToOnboarding,
  buildAppCreatedTrackingIdentity,
  buildAppCreatorEventDetails,
  getAppCreatorUserId,
  resolveAppCreatorEmail,
} from '../supabase/functions/_backend/utils/app_creator.ts'

const creatorUserId = '6aa76066-55ef-4238-ade6-0b32334a4097'

describe('app creator metadata', () => {
  it.concurrent('stores the authenticated creator without dropping onboarding state', () => {
    const onboarding = addAppCreatorToOnboarding({
      features: { ota: { stage: 'local_only' } },
    }, creatorUserId, 'creator@capgo.app')

    expect(onboarding).toEqual({
      created_by_email: 'creator@capgo.app',
      created_by_user_id: creatorUserId,
      features: { ota: { stage: 'local_only' } },
    })
    expect(getAppCreatorUserId(onboarding)).toBe(creatorUserId)
  })

  it.concurrent('builds Bento event details with the creator id and email', () => {
    expect(buildAppCreatorEventDetails({
      created_by_email: 'creator@capgo.app',
      created_by_user_id: creatorUserId,
    })).toEqual({
      created_by_user_id: creatorUserId,
      created_by_email: 'creator@capgo.app',
    })
  })

  it.concurrent('uses the stored user email when JWT claims do not contain one', () => {
    expect(resolveAppCreatorEmail(undefined, 'creator@capgo.app')).toBe('creator@capgo.app')
    expect(resolveAppCreatorEmail('', 'creator@capgo.app')).toBe('creator@capgo.app')
  })

  it.concurrent('omits invalid or missing creator metadata', () => {
    expect(getAppCreatorUserId({ created_by_user_id: 'not-a-user-id' })).toBeUndefined()
    expect(buildAppCreatorEventDetails({ created_by_email: 'creator@capgo.app' })).toEqual({})
  })

  it.concurrent('attributes App Created to the creator user with its creation source', () => {
    const orgId = '046a36ac-e03c-4590-9257-bd6c9dba9ee8'
    expect(buildAppCreatedTrackingIdentity({ created_by_user_id: creatorUserId, setup: { source: 'cli' } }, orgId))
      .toEqual({ user_id: creatorUserId, source: 'cli' })
    expect(buildAppCreatedTrackingIdentity({ created_by_user_id: creatorUserId, source: 'ai' }, orgId))
      .toEqual({ user_id: creatorUserId, source: 'ai' })
    expect(buildAppCreatedTrackingIdentity(null, orgId)).toEqual({ user_id: orgId, source: 'unknown' })
  })
})