A downstream fork of Tranquil PDS for use in margin.cafe margin.cafe
Something went wrong. Try again.
123456789101112131415161718192021222324252627import { beforeEach, describe, expect, it, vi } from 'vitest'import { fireEvent, render, waitFor } from '@testing-library/svelte'import ProfileAvatar from '../components/ProfileAvatar.svelte'import { loadActorProfile } from '../../public/actor-profile.js'vi.mock('../../public/actor-profile.js', () => ({ loadActorProfile: vi.fn() }))
describe('profile avatar', () => { beforeEach(() => vi.mocked(loadActorProfile).mockReset()) it('falls back to initials when an avatar image fails', async () => { vi.mocked(loadActorProfile).mockResolvedValue({ displayName: 'Alex', avatarUrl: '/xrpc/com.atproto.sync.getBlob?did=did:plc:a&cid=bafyexample' }) const { container } = render(ProfileAvatar, { did: 'did:plc:a', handle: 'alex.example' }) await waitFor(() => expect(container.querySelector('img')).not.toBeNull()) await fireEvent.error(container.querySelector('img')!) expect(container.querySelector('img')).toBeNull() expect(container.textContent).toContain('A') }) it('does not display a previous account avatar after an account change', async () => { let finishOld: (profile: { avatarUrl: string }) => void = () => {} vi.mocked(loadActorProfile).mockReturnValueOnce(new Promise(resolve => finishOld = resolve)).mockResolvedValueOnce({}) const { container, rerender } = render(ProfileAvatar, { did: 'did:plc:a', handle: 'alex.example' }) await rerender({ did: 'did:plc:b', handle: 'blair.example' }) finishOld({ avatarUrl: '/old-avatar' }) await waitFor(() => expect(container.textContent).toContain('B')) expect(container.querySelector('img')).toBeNull() })})