import {mountWithTheme} from 'sentry-test/enzyme'; import {act} 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'; describe('ActorAvatar', function () { const USER = { id: '1', name: 'JanActore Bloggs', email: 'janebloggs@example.com', }; const TEAM_1 = { id: '3', slug: 'cool-team', name: 'COOL TEAM', projects: [ { slug: 2, }, ], }; const org = TestStubs.Organization(); OrganizationStore.onUpdate(org, {replace: true}); beforeEach(function () { MemberListStore.loadInitialData([USER]); act(() => void TeamStore.loadInitialData([TEAM_1])); }); afterEach(function () {}); describe('render()', function () { it('should show a gravatar when actor type is a user', function () { const avatar = mountWithTheme( ); expect(avatar).toSnapshot(); }); it('should not show a gravatar when actor type is a team', function () { const avatar = mountWithTheme( ); expect(avatar.find('LetterAvatar')).toHaveLength(1); expect(avatar.find('Gravatar')).toHaveLength(0); expect(avatar).toSnapshot(); }); it('should return null when actor type is a unknown', function () { const avatar = mountWithTheme( ); expect(avatar.html()).toBe(null); }); it('should fetch a team not in the store', async function () { const team2 = TestStubs.Team({id: '2'}); const mockRequest = MockApiClient.addMockResponse({ url: `/organizations/${org.slug}/teams/`, method: 'GET', body: [team2], }); const avatar = mountWithTheme( ); expect(mockRequest).toHaveBeenCalled(); await act(() => tick()); avatar.update(); expect(avatar.find('LetterAvatar')).toHaveLength(1); }); }); });