Files
aiturk-hermes-ide/apps/desktop/src/components/notifications.test.tsx
T

51 lines
1.6 KiB
TypeScript

import { cleanup, render, screen } from '@testing-library/react'
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
import { I18nProvider } from '@/i18n'
import { clearNotifications, notify } from '@/store/notifications'
import { NotificationStack, toastTitleClassName } from './notifications'
const LONG_TITLE = 'This turn is no longer in server history (it may have been compressed away).'
const DETAIL = 'target user message is no longer in session history'
describe('toast titles', () => {
beforeEach(() => {
clearNotifications()
})
afterEach(() => {
cleanup()
clearNotifications()
})
it('drops the one-line clamp so a long error title can wrap', () => {
const className = toastTitleClassName()
expect(className).toMatch(/\bline-clamp-none\b/)
expect(className).not.toMatch(/\bline-clamp-1\b/)
expect(className).toMatch(/\bwhitespace-normal\b/)
expect(className).toContain('max-h-[4.5em]')
expect(className).toMatch(/\boverflow-y-auto\b/)
})
it('renders the full title and body instead of truncating them', () => {
notify({ kind: 'error', title: LONG_TITLE, message: DETAIL })
render(
<I18nProvider configClient={null} initialLocale="en">
<NotificationStack />
</I18nProvider>
)
const title = screen.getByText(LONG_TITLE)
expect(title.textContent).toBe(LONG_TITLE)
expect(title.getAttribute('title')).toBe(LONG_TITLE)
expect(title.className).toMatch(/\bline-clamp-none\b/)
expect(title.className).not.toMatch(/\bline-clamp-1\b/)
expect(title.className).toMatch(/\boverflow-y-auto\b/)
expect(screen.getByText(DETAIL)).toBeTruthy()
})
})