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);
});
});
});