diff --git a/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx b/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx
index 2cf1c3a24e..24473e3453 100644
--- a/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx
+++ b/__tests__/pages/Organizations/components/OrganizationAccessList.test.jsx
@@ -176,4 +176,38 @@ describe('', () => {
done();
});
});
+
+ test('add role button visible for user that can edit org', () => {
+ const wrapper = mountWithContexts(
+ ({ data: { count: 1, results: mockData } })}
+ removeRole={() => {}}
+ api={api}
+ organization={organization}
+ />
+ ).find('OrganizationAccessList');
+
+ setImmediate(() => {
+ const addRole = wrapper.update().find('DataListToolbar').find('PlusIcon');
+ expect(addRole.length).toBe(1);
+ });
+ });
+
+ test('add role button hidden for user that cannot edit org', () => {
+ const readOnlyOrg = { ...organization };
+ readOnlyOrg.summary_fields.user_capabilities.edit = false;
+ const wrapper = mountWithContexts(
+ ({ data: { count: 1, results: mockData } })}
+ removeRole={() => {}}
+ api={api}
+ organization={readOnlyOrg}
+ />
+ ).find('OrganizationAccessList');
+
+ setImmediate(() => {
+ const addRole = wrapper.update().find('DataListToolbar').find('PlusIcon');
+ expect(addRole.length).toBe(0);
+ });
+ });
});
diff --git a/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx b/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx
index cd7e7a5dbc..21e69ac58f 100644
--- a/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx
+++ b/__tests__/pages/Organizations/screens/Organization/Organization.test.jsx
@@ -10,4 +10,14 @@ describe('', () => {
test('initially renders succesfully', () => {
mountWithContexts();
});
+ test('notifications tab shown/hidden based on permissions', () => {
+ const wrapper = mountWithContexts();
+ expect(wrapper.find('.pf-c-tabs__item').length).toBe(3);
+ expect(wrapper.find('.pf-c-tabs__button[children="Notifications"]').length).toBe(0);
+ wrapper.find('Organization').setState({
+ isNotifAdmin: true
+ });
+ expect(wrapper.find('.pf-c-tabs__item').length).toBe(4);
+ expect(wrapper.find('.pf-c-tabs__button[children="Notifications"]').length).toBe(1);
+ });
});
diff --git a/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx b/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx
index 8636e3bce9..3b7ddda352 100644
--- a/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx
+++ b/__tests__/pages/Organizations/screens/Organization/OrganizationDetail.test.jsx
@@ -88,4 +88,28 @@ describe('', () => {
expect(modifiedDetail.find('h6').text()).toBe('Last Modified');
expect(modifiedDetail.find('p').text()).toBe('Boo');
});
+
+ test('should show edit button for users with edit permission', () => {
+ const wrapper = mountWithContexts(
+
+ ).find('OrganizationDetail');
+
+ const editLink = wrapper.findWhere(node => node.props().to === '/organizations/undefined/edit');
+ expect(editLink.length).toBe(1);
+ });
+
+ test('should hide edit button for users without edit permission', () => {
+ const readOnlyOrg = { ...mockDetails };
+ readOnlyOrg.summary_fields.user_capabilities.edit = false;
+ const wrapper = mountWithContexts(
+
+ ).find('OrganizationDetail');
+
+ const editLink = wrapper.findWhere(node => node.props().to === '/organizations/undefined/edit');
+ expect(editLink.length).toBe(0);
+ });
});
diff --git a/src/pages/Organizations/screens/Organization/Organization.jsx b/src/pages/Organizations/screens/Organization/Organization.jsx
index da0c526f25..e4d8a837ec 100644
--- a/src/pages/Organizations/screens/Organization/Organization.jsx
+++ b/src/pages/Organizations/screens/Organization/Organization.jsx
@@ -135,14 +135,18 @@ class Organization extends Component {
|| isAdminOfThisOrg
);
- const tabElements = [
- { name: i18nMark('Details'), link: `${match.url}/details` },
- { name: i18nMark('Access'), link: `${match.url}/access` },
- { name: i18nMark('Teams'), link: `${match.url}/teams` }
+ const tabsArray = [
+ { name: i18nMark('Details'), link: `${match.url}/details`, id: 0 },
+ { name: i18nMark('Access'), link: `${match.url}/access`, id: 1 },
+ { name: i18nMark('Teams'), link: `${match.url}/teams`, id: 2 }
];
if (canSeeNotificationsTab) {
- tabElements.push({ name: i18nMark('Notifications'), link: `${match.url}/notifications` });
+ tabsArray.push({
+ name: i18nMark('Notifications'),
+ link: `${match.url}/notifications`,
+ id: 3
+ });
}
let cardHeader = (
@@ -158,12 +162,7 @@ class Organization extends Component {
match={match}
history={history}
labeltext={i18n._(t`Organization detail tabs`)}
- tabsArray={[
- { name: i18nMark('Details'), link: `${match.url}/details`, id: 0 },
- { name: i18nMark('Access'), link: `${match.url}/access`, id: 1 },
- { name: i18nMark('Teams'), link: `${match.url}/teams`, id: 2 },
- { name: i18nMark('Notifications'), link: `${match.url}/notifications`, id: 3 },
- ]}
+ tabsArray={tabsArray}
/>