Files
supabase/apps/studio/components/interfaces/Platform/Webhooks/PlatformWebhooks.utils.test.ts
Danny White 611ad867be chore(studio): webhook name (#43796)
## What kind of change does this PR introduce?

Chore

## What is the current behavior?

Endpoints have no (public) unique identifier, making it hard to
distinguish in UI.

## What is the new behavior?

Endpoints now have a name field. This is optional but strongly
encouraged:
- No _(Optional)_ on label
- Autogenerated name

Removing an endpoint name makes corresponding UI fall back the URL.

| Before | After |
| --- | --- |
| <img width="1234" height="629" alt="Settings Oldie 2 Toolshed
Supabase-CF557DE5-FA03-40E7-938E-2CC87F27C9A5"
src="https://github.com/user-attachments/assets/4b55fcb7-f8bc-4b85-a374-9ee62e452cb0"
/> | <img width="1234" height="629" alt="Settings Oldie 2 Toolshed
Supabase-74BBF142-DEC0-4626-B614-B05EBB2AC0EF"
src="https://github.com/user-attachments/assets/7ff40a91-c71a-4e20-85f8-0837d62202aa"
/> |
| <img width="1234" height="629" alt="Settings Oldie 2 Toolshed
Supabase-32A4B56C-61F5-4C1C-81DD-C455835E075F"
src="https://github.com/user-attachments/assets/f732ca50-2c60-4fbc-99c7-53afb5c34682"
/> | <img width="1234" height="629" alt="Settings Oldie 2 Toolshed
Supabase-29987973-9616-4409-9DF1-B9581112D4C3"
src="https://github.com/user-attachments/assets/0cf1db9a-fe84-4140-a2fc-bf10cf295c3b"
/> |
2026-03-18 03:08:56 +00:00

37 lines
971 B
TypeScript

import { afterEach, describe, expect, it, vi } from 'vitest'
import {
generateWebhookEndpointName,
getWebhookEndpointDisplayName,
} from './PlatformWebhooks.utils'
describe('PlatformWebhooks.utils', () => {
afterEach(() => {
vi.restoreAllMocks()
})
it('returns the trimmed endpoint name when present', () => {
expect(
getWebhookEndpointDisplayName({
name: ' Billing events ',
url: 'https://hooks.example.com/billing',
})
).toBe('Billing events')
})
it('falls back to the endpoint url when the name is empty', () => {
expect(
getWebhookEndpointDisplayName({
name: ' ',
url: 'https://hooks.example.com/fallback',
})
).toBe('https://hooks.example.com/fallback')
})
it('generates an adjective-noun endpoint name', () => {
vi.spyOn(Math, 'random').mockReturnValueOnce(0).mockReturnValueOnce(0.1)
expect(generateWebhookEndpointName()).toBe('swift-courier')
})
})