Skip to content

Commit

Permalink
Expose all user features that were hidden for groups
Browse files Browse the repository at this point in the history
  • Loading branch information
scottybollinger committed Jun 24, 2021
1 parent cab6d34 commit 44f2203
Show file tree
Hide file tree
Showing 11 changed files with 25 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import {
import { i18n } from '@kbn/i18n';

import { TruncatedContent } from '../../../../shared/truncate';
import { AppLogic } from '../../../app_logic';
import noSharedSourcesIcon from '../../../assets/share_circle.svg';
import { WorkplaceSearchPageTemplate } from '../../../components/layout';
import { ContentSection } from '../../../components/shared/content_section';
Expand Down Expand Up @@ -124,8 +123,6 @@ export const GroupOverview: React.FC = () => {
confirmDeleteModalVisible,
} = useValues(GroupLogic);

const { isFederatedAuth } = useValues(AppLogic);

const truncatedName = name && (
<TruncatedContent tooltipType="title" content={name} length={MAX_NAME_LENGTH} />
);
Expand Down Expand Up @@ -167,7 +164,7 @@ export const GroupOverview: React.FC = () => {
{MANAGE_SOURCES_BUTTON_TEXT}
</EuiButton>
);
const manageUsersButton = !isFederatedAuth && (
const manageUsersButton = (
<EuiButton color="primary" onClick={showManageUsersModal}>
{MANAGE_USERS_BUTTON_TEXT}
</EuiButton>
Expand Down Expand Up @@ -199,7 +196,7 @@ export const GroupOverview: React.FC = () => {
</>
);

const usersSection = !isFederatedAuth && (
const usersSection = (
<ContentSection
title="Group users"
description={hasUsers ? GROUP_USERS_DESCRIPTION : EMPTY_USERS_DESCRIPTION}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,13 @@ import { GroupRow, NO_USERS_MESSAGE, NO_SOURCES_MESSAGE } from './group_row';
import { GroupUsers } from './group_users';

describe('GroupRow', () => {
beforeEach(() => {
setMockValues({ isFederatedAuth: true });
});

it('renders', () => {
const wrapper = shallow(<GroupRow {...groups[0]} />);

expect(wrapper.find(EuiTableRow)).toHaveLength(1);
});

it('renders group users', () => {
setMockValues({ isFederatedAuth: false });
const wrapper = shallow(<GroupRow {...groups[0]} />);

expect(wrapper.find(GroupUsers)).toHaveLength(1);
Expand All @@ -51,7 +46,6 @@ describe('GroupRow', () => {
});

it('renders empty users message when no users present', () => {
setMockValues({ isFederatedAuth: false });
const wrapper = shallow(<GroupRow {...groups[0]} usersCount={0} />);

expect(wrapper.find('.user-group__accounts').text()).toEqual(NO_USERS_MESSAGE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,13 @@

import React from 'react';

import { useValues } from 'kea';
import moment from 'moment';

import { EuiTableRow, EuiTableRowCell, EuiIcon } from '@elastic/eui';
import { i18n } from '@kbn/i18n';

import { EuiLinkTo } from '../../../../shared/react_router_helpers';
import { TruncatedContent } from '../../../../shared/truncate';
import { AppLogic } from '../../../app_logic';
import { getGroupPath } from '../../../routes';
import { Group } from '../../../types';
import { MAX_NAME_LENGTH } from '../group_logic';
Expand Down Expand Up @@ -50,8 +48,6 @@ export const GroupRow: React.FC<Group> = ({
users,
usersCount,
}) => {
const { isFederatedAuth } = useValues(AppLogic);

const GROUP_UPDATED_TEXT = i18n.translate(
'xpack.enterpriseSearch.workplaceSearch.groups.groupUpdatedText',
{
Expand Down Expand Up @@ -80,17 +76,15 @@ export const GroupRow: React.FC<Group> = ({
)}
</div>
</EuiTableRowCell>
{!isFederatedAuth && (
<EuiTableRowCell>
<div className="user-group__accounts">
{usersCount > 0 ? (
<GroupUsers groupUsers={users} usersCount={usersCount} groupId={id} />
) : (
NO_USERS_MESSAGE
)}
</div>
</EuiTableRowCell>
)}
<EuiTableRowCell>
<div className="user-group__accounts">
{usersCount > 0 ? (
<GroupUsers groupUsers={users} usersCount={usersCount} groupId={id} />
) : (
NO_USERS_MESSAGE
)}
</div>
</EuiTableRowCell>
<EuiTableRowCell align="right">
<strong>
<EuiLinkTo to={getGroupPath(id)}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,10 @@ const group = groups[0];

describe('GroupUsersTable', () => {
it('renders', () => {
setMockValues({ isFederatedAuth: true, group });
setMockValues({ group });
const wrapper = shallow(<GroupUsersTable />);

expect(wrapper.find(EuiTable)).toHaveLength(1);
expect(wrapper.find(TableHeader).prop('headerItems')).toHaveLength(1);
});

it('adds header item for non-federated auth', () => {
setMockValues({ isFederatedAuth: false, group });
const wrapper = shallow(<GroupUsersTable />);

expect(wrapper.find(TableHeader).prop('headerItems')).toHaveLength(2);
});

Expand All @@ -48,7 +41,7 @@ describe('GroupUsersTable', () => {
});
});

setMockValues({ isFederatedAuth: true, group: { users } });
setMockValues({ group: { users } });
const wrapper = shallow(<GroupUsersTable />);
const pagination = wrapper.find(EuiTablePagination);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,17 @@ import { Pager } from '@elastic/eui';

import { USERNAME_LABEL, EMAIL_LABEL } from '../../../../shared/constants';
import { TableHeader } from '../../../../shared/table_header';
import { AppLogic } from '../../../app_logic';
import { UserRow } from '../../../components/shared/user_row';
import { User } from '../../../types';
import { GroupLogic } from '../group_logic';

const USERS_PER_PAGE = 10;

export const GroupUsersTable: React.FC = () => {
const { isFederatedAuth } = useValues(AppLogic);
const {
group: { users },
} = useValues(GroupLogic);
const headerItems = [USERNAME_LABEL];
if (!isFederatedAuth) {
headerItems.push(EMAIL_LABEL);
}
const headerItems = [USERNAME_LABEL, EMAIL_LABEL];

const [firstItem, setFirstItem] = useState(0);
const [lastItem, setLastItem] = useState(USERS_PER_PAGE - 1);
Expand Down Expand Up @@ -58,10 +53,10 @@ export const GroupUsersTable: React.FC = () => {
return (
<>
<EuiTable>
<TableHeader extraCell={isFederatedAuth} headerItems={headerItems} />
<TableHeader extraCell={false} headerItems={headerItems} />
<EuiTableBody>
{users.slice(firstItem, lastItem + 1).map((user: User) => (
<UserRow key={user.id} showEmail={!isFederatedAuth} user={user} />
<UserRow key={user.id} showEmail user={user} />
))}
</EuiTableBody>
</EuiTable>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ const mockValues = {
groupsMeta: DEFAULT_META,
groups,
hasFiltersSet: false,
isFederatedAuth: true,
};

describe('GroupsTable', () => {
Expand All @@ -43,13 +42,6 @@ describe('GroupsTable', () => {
expect(wrapper.find(GroupRow)).toHaveLength(1);
});

it('renders extra header for non-federated auth', () => {
setMockValues({ ...mockValues, isFederatedAuth: false });
const wrapper = shallow(<GroupsTable />);

expect(wrapper.find(EuiTableHeaderCell)).toHaveLength(4);
});

it('handles pagination', () => {
setMockValues({
...mockValues,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import {
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';

import { AppLogic } from '../../../app_logic';
import { TablePaginationBar } from '../../../components/shared/table_pagination_bar';
import { GroupsLogic } from '../groups_logic';

Expand Down Expand Up @@ -53,7 +52,6 @@ export const GroupsTable: React.FC<{}> = () => {
groups,
hasFiltersSet,
} = useValues(GroupsLogic);
const { isFederatedAuth } = useValues(AppLogic);

const clearFiltersLink = hasFiltersSet ? <ClearFiltersLink /> : undefined;

Expand All @@ -79,7 +77,7 @@ export const GroupsTable: React.FC<{}> = () => {
<EuiTableHeader>
<EuiTableHeaderCell>{GROUP_TABLE_HEADER}</EuiTableHeaderCell>
<EuiTableHeaderCell>{SOURCES_TABLE_HEADER}</EuiTableHeaderCell>
{!isFederatedAuth && <EuiTableHeaderCell>{USERS_TABLE_HEADER}</EuiTableHeaderCell>}
{<EuiTableHeaderCell>{USERS_TABLE_HEADER}</EuiTableHeaderCell>}
<EuiTableHeaderCell />
</EuiTableHeader>
<EuiTableBody>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,14 @@ const setFilterValue = jest.fn();

describe('TableFilters', () => {
beforeEach(() => {
setMockValues({ filterValue: '', isFederatedAuth: true });
setMockValues({ filterValue: '' });
setMockActions({ setFilterValue });
});
it('renders', () => {
const wrapper = shallow(<TableFilters />);

expect(wrapper.find(EuiFieldSearch)).toHaveLength(1);
expect(wrapper.find(TableFilterSourcesDropdown)).toHaveLength(1);
expect(wrapper.find(TableFilterUsersDropdown)).toHaveLength(0);
});

it('renders for non-federated Auth', () => {
setMockValues({ filterValue: '', isFederatedAuth: false });
const wrapper = shallow(<TableFilters />);

expect(wrapper.find(TableFilterUsersDropdown)).toHaveLength(1);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { useActions, useValues } from 'kea';
import { EuiFieldSearch, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { i18n } from '@kbn/i18n';

import { AppLogic } from '../../../app_logic';
import { GroupsLogic } from '../groups_logic';

import { TableFilterSourcesDropdown } from './table_filter_sources_dropdown';
Expand All @@ -28,7 +27,6 @@ const FILTER_GROUPS_PLACEHOLDER = i18n.translate(
export const TableFilters: React.FC = () => {
const { setFilterValue } = useActions(GroupsLogic);
const { filterValue } = useValues(GroupsLogic);
const { isFederatedAuth } = useValues(AppLogic);

const handleSearchChange = (e: ChangeEvent<HTMLInputElement>) => setFilterValue(e.target.value);

Expand All @@ -47,11 +45,9 @@ export const TableFilters: React.FC = () => {
<EuiFlexItem className="user-groups-filters__filter-sources">
<TableFilterSourcesDropdown />
</EuiFlexItem>
{!isFederatedAuth && (
<EuiFlexItem>
<TableFilterUsersDropdown />
</EuiFlexItem>
)}
<EuiFlexItem>
<TableFilterUsersDropdown />
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
</EuiFlexGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ const mockValues = {
filteredSources: [],
filteredUsers: [],
filterValue: '',
isFederatedAuth: false,
};

describe('GroupOverview', () => {
Expand Down Expand Up @@ -112,31 +111,14 @@ describe('GroupOverview', () => {
expect(wrapper.find(ClearFiltersLink)).toHaveLength(1);
});

it('renders inviteUsersButton when not federated auth', () => {
setMockValues({
...mockValues,
isFederatedAuth: false,
});

it('renders inviteUsersButton', () => {
const wrapper = shallow(<Groups />);
const actions = getPageHeaderActions(wrapper);

expect(actions.find('[data-test-subj="InviteUsersButton"]')).toHaveLength(1);
expect(actions.find(EuiButtonTo)).toHaveLength(1);
});

it('does not render inviteUsersButton when federated auth', () => {
setMockValues({
...mockValues,
isFederatedAuth: true,
});

const wrapper = shallow(<Groups />);
const actions = getPageHeaderActions(wrapper);

expect(actions.find('[data-test-subj="InviteUsersButton"]')).toHaveLength(0);
});

it('renders EuiLoadingSpinner when loading', () => {
setMockValues({
...mockValues,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@ import { i18n } from '@kbn/i18n';

import { FlashMessagesLogic } from '../../../shared/flash_messages';
import { EuiButtonTo } from '../../../shared/react_router_helpers';
import { AppLogic } from '../../app_logic';
import { WorkplaceSearchPageTemplate } from '../../components/layout';
import { NAV } from '../../constants';
import { getGroupPath, USERS_PATH } from '../../routes';
import { getGroupPath, USERS_AND_ROLES_PATH } from '../../routes';

import { AddGroupModal } from './components/add_group_modal';
import { ClearFiltersLink } from './components/clear_filters_link';
Expand All @@ -43,8 +42,6 @@ export const Groups: React.FC = () => {
filterValue,
} = useValues(GroupsLogic);

const { isFederatedAuth } = useValues(AppLogic);

const hasMessages = messages.length > 0;

useEffect(() => {
Expand All @@ -68,7 +65,7 @@ export const Groups: React.FC = () => {

const clearFilters = hasFiltersSet && <ClearFiltersLink />;
const inviteUsersButton = (
<EuiButtonTo to={USERS_PATH} data-test-subj="InviteUsersButton">
<EuiButtonTo to={USERS_AND_ROLES_PATH} data-test-subj="InviteUsersButton">
{i18n.translate('xpack.enterpriseSearch.workplaceSearch.groups.inviteUsers.action', {
defaultMessage: 'Invite users',
})}
Expand All @@ -81,9 +78,7 @@ export const Groups: React.FC = () => {
})}
</EuiButton>
);
const headerActions = !isFederatedAuth
? [inviteUsersButton, createGroupButton]
: [createGroupButton];
const headerActions = [inviteUsersButton, createGroupButton];

const noResults = (
<EuiFlexGroup justifyContent="spaceAround">
Expand Down

0 comments on commit 44f2203

Please sign in to comment.