import { LocalMessage } from 'stream-chat'
import { describe, expect, it } from 'vitest'
import { renderWithProviders, screen } from '../../../test/utils'
import { TipMessage } from '.'
interface MockMessageOptions {
metadata?: {
custom_type?: 'MESSAGE_TIP'
amount_text?: string
}
text?: string
}
const createMockMessage = (options?: MockMessageOptions): LocalMessage =>
({
id: 'msg-1',
text: options?.text ?? 'Hello world',
type: 'regular',
created_at: new Date(),
updated_at: new Date(),
metadata: options?.metadata,
}) as LocalMessage
describe('TipMessage', () => {
it('renders tip pill regardless of accompanying text', () => {
renderWithProviders(
)
const tipTag = screen.getByText('$5.50 tip!')
expect(tipTag.closest('.message-tip-pill')).not.toBeNull()
})
it('renders tip pill label for textless tip messages', () => {
renderWithProviders(
)
const tipTag = screen.getByText('$50.00 tip!')
expect(tipTag.closest('.message-tip-pill')).not.toBeNull()
})
it('returns null when amount_text is missing', () => {
const { container } = renderWithProviders(
)
expect(container.firstChild).toBeNull()
})
})