import {Organization} from 'sentry-fixture/organization'; import {Team} from 'sentry-fixture/team'; import {User} from 'sentry-fixture/user'; import {render, screen} from 'sentry-test/reactTestingLibrary'; import ActorAvatar from 'sentry/components/avatar/actorAvatar'; import MemberListStore from 'sentry/stores/memberListStore'; import OrganizationStore from 'sentry/stores/organizationStore'; import TeamStore from 'sentry/stores/teamStore'; import type {Team as TeamType, User as UserType} from 'sentry/types'; describe('ActorAvatar', function () { const user: UserType = { ...User(), id: '1', name: 'JanActore Bloggs', email: 'janebloggs@example.com', }; const team1: TeamType = { ...Team(), id: '3', slug: 'cool-team', name: 'COOL TEAM', }; beforeEach(function () { MemberListStore.loadInitialData([user]); TeamStore.loadInitialData([team1]); }); it('should show a gravatar when actor type is a user', function () { render( ); }); it('should not show a gravatar when actor type is a team', function () { render( ); expect(screen.getByText('CT')).toBeInTheDocument(); }); it('should return null when actor type is a unknown', function () { render( ); expect(screen.queryByText('CT')).not.toBeInTheDocument(); }); it('should fetch a team not in the store', async function () { const organization = Organization(); OrganizationStore.onUpdate(organization, {replace: true}); const team2 = Team({id: '2', name: 'COOL TEAM', slug: 'cool-team'}); const mockRequest = MockApiClient.addMockResponse({ url: `/organizations/${organization.slug}/teams/`, method: 'GET', body: [team2], }); render( ); expect(await screen.findByText('CT')).toBeInTheDocument(); expect(mockRequest).toHaveBeenCalled(); }); });