tests/app-creator.unit.test.ts
Rama main · réplica de lectura del repositorio original.
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' })
})
})