import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
import {openInviteMembersModal} from 'sentry/actionCreators/modal';
import trackAdvancedAnalyticsEvent from 'sentry/utils/analytics/trackAdvancedAnalyticsEvent';
import OrganizationMembersList from 'sentry/views/settings/organizationMembers/organizationMembersList';
import OrganizationMembersWrapper from 'sentry/views/settings/organizationMembers/organizationMembersWrapper';
jest.mock('sentry/utils/analytics/trackAdvancedAnalyticsEvent', () => jest.fn());
jest.mock('sentry/actionCreators/modal', () => ({
openInviteMembersModal: jest.fn(),
}));
describe('OrganizationMembersWrapper', function () {
const member = TestStubs.Member();
const organization = TestStubs.Organization({
features: ['invite-members'],
access: ['member:admin', 'org:admin', 'member:write'],
status: {
id: 'active',
},
});
const defaultProps = {
location: {query: {}},
params: {orgId: organization.slug},
};
beforeEach(function () {
trackAdvancedAnalyticsEvent.mockClear();
MockApiClient.clearMockResponses();
MockApiClient.addMockResponse({
url: '/organizations/org-slug/members/me/',
method: 'GET',
body: {roles: []},
});
MockApiClient.addMockResponse({
url: '/organizations/org-slug/invite-requests/',
method: 'GET',
body: [],
});
MockApiClient.addMockResponse({
url: '/organizations/org-slug/access-requests/',
method: 'GET',
body: [],
});
MockApiClient.addMockResponse({
url: '/organizations/org-slug/members/',
method: 'GET',
body: [],
});
MockApiClient.addMockResponse({
url: '/organizations/org-slug/auth-provider/',
method: 'GET',
body: {},
});
});
it('can invite member', function () {
render();
userEvent.click(screen.getByRole('button', {name: 'Invite Members'}));
expect(openInviteMembersModal).toHaveBeenCalled();
});
it('can not invite members without the invite-members feature', function () {
const org = TestStubs.Organization({
features: [],
access: ['member:admin', 'org:admin', 'member:write'],
status: {
id: 'active',
},
});
render();
expect(screen.getByRole('button', {name: 'Invite Members'})).toBeDisabled();
});
it('can invite without permissions', function () {
const org = TestStubs.Organization({
features: ['invite-members'],
access: [],
status: {
id: 'active',
},
});
render();
userEvent.click(screen.getByRole('button', {name: 'Invite Members'}));
expect(openInviteMembersModal).toHaveBeenCalled();
});
it('renders member list', function () {
MockApiClient.addMockResponse({
url: '/organizations/org-slug/members/',
method: 'GET',
body: [member],
});
render(
);
expect(screen.getByText('Members')).toBeInTheDocument();
expect(screen.getByText(member.name)).toBeInTheDocument();
});
});