agentAvatar.test.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { mount } from '@vue/test-utils'
  2. import { describe, expect, it } from 'vitest'
  3. import AgentAvatar from '@/components/common/AgentAvatar.vue'
  4. import MessageTimeline from '@/components/messages/MessageTimeline.vue'
  5. const transparentPng = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII='
  6. describe('AgentAvatar', () => {
  7. it('marks real images so caller backgrounds cannot show through transparent pixels', () => {
  8. const wrapper = mount(AgentAvatar, { props: { name: '丫头', avatar: transparentPng } })
  9. expect(wrapper.classes()).toContain('agent-avatar--image')
  10. expect(wrapper.find('img').attributes('src')).toBe(transparentPng)
  11. })
  12. it('keeps the caller background available for the text fallback', () => {
  13. const wrapper = mount(AgentAvatar, { props: { name: '丫头' } })
  14. expect(wrapper.classes()).not.toContain('agent-avatar--image')
  15. expect(wrapper.find('img').exists()).toBe(false)
  16. expect(wrapper.text()).toBe('丫')
  17. })
  18. it('keeps a group-message image transparent when MessageTimeline adds its fallback class', () => {
  19. const wrapper = mount(MessageTimeline, {
  20. attachTo: document.body,
  21. props: {
  22. messages: [{ id: 'assistant-1', role: 'assistant', profile: 'default', author: '丫头', content: '收到,测试正常。' }],
  23. agentAvatars: { default: transparentPng },
  24. },
  25. })
  26. const avatar = wrapper.get('.message__avatar')
  27. expect(avatar.classes()).toEqual(expect.arrayContaining(['agent-avatar--image', 'message__avatar']))
  28. expect(getComputedStyle(avatar.element).backgroundColor).toBe('rgba(0, 0, 0, 0)')
  29. wrapper.unmount()
  30. })
  31. })