import { describe, it, expect, beforeEach } from 'vitest'
import { mount } from '@vue/test-utils'
import SynapseEventNotice from '@/components/messages/SynapseEventNotice.vue'
import { setLocale } from '@/i18n/index.js'
function mountNotice(msg) {
return mount(SynapseEventNotice, { props: { msg } })
}
describe('SynapseEventNotice', () => {
beforeEach(() => setLocale('en'))
it('renders the event as a service record, not a user bubble', () => {
const wrapper = mountNotice({
type: 'synapse_event',
text: 'Пользователь просит напомнить о встрече',
eventType: 'tg.message',
time: '2026-10-10T12:30:00Z',
})
expect(wrapper.find('.msg-user').exists()).toBe(false)
expect(wrapper.find('.synapse-event-label').text()).toBe('Synapse event')
expect(wrapper.find('.synapse-event-type').text()).toBe('tg.message')
expect(wrapper.find('.synapse-event-body').text()).toContain('напомнить о встрече')
})
it('translates its caption with the interface language', () => {
const wrapper = mountNotice({ type: 'synapse_event', text: 'hi', eventType: '' })
expect(wrapper.find('.synapse-event-label').text()).toBe('Synapse event')
setLocale('ru')
return wrapper.vm.$nextTick().then(() => {
expect(wrapper.find('.synapse-event-label').text()).toBe('Событие Synapse')
})
})
it('renders markdown in the request body and hides the event type when absent', () => {
const wrapper = mountNotice({
type: 'synapse_event',
text: '**bold** request',
eventType: '',
})
expect(wrapper.find('.synapse-event-body').html()).toContain('<strong>bold</strong>')
expect(wrapper.find('.synapse-event-type').exists()).toBe(false)
})
})