72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
import { GlTable } from '@gitlab/ui';
|
|
import { mount } from '@vue/test-utils';
|
|
|
|
import AdminUserActions from '~/admin/users/components/user_actions.vue';
|
|
import AdminUserAvatar from '~/admin/users/components/user_avatar.vue';
|
|
import AdminUserDate from '~/admin/users/components/user_date.vue';
|
|
import AdminUsersTable from '~/admin/users/components/users_table.vue';
|
|
|
|
import { users, paths } from '../mock_data';
|
|
|
|
describe('AdminUsersTable component', () => {
|
|
let wrapper;
|
|
|
|
const getCellByLabel = (trIdx, label) => {
|
|
return wrapper
|
|
.find(GlTable)
|
|
.find('tbody')
|
|
.findAll('tr')
|
|
.at(trIdx)
|
|
.find(`[data-label="${label}"][role="cell"]`);
|
|
};
|
|
|
|
const initComponent = (props = {}) => {
|
|
wrapper = mount(AdminUsersTable, {
|
|
propsData: {
|
|
users,
|
|
paths,
|
|
...props,
|
|
},
|
|
});
|
|
};
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
wrapper = null;
|
|
});
|
|
|
|
describe('when there are users', () => {
|
|
const user = users[0];
|
|
|
|
beforeEach(() => {
|
|
initComponent();
|
|
});
|
|
|
|
it('renders the projects count', () => {
|
|
expect(getCellByLabel(0, 'Projects').text()).toContain(`${user.projectsCount}`);
|
|
});
|
|
|
|
it('renders the user actions', () => {
|
|
expect(wrapper.find(AdminUserActions).exists()).toBe(true);
|
|
});
|
|
|
|
it.each`
|
|
component | label
|
|
${AdminUserAvatar} | ${'Name'}
|
|
${AdminUserDate} | ${'Created on'}
|
|
${AdminUserDate} | ${'Last activity'}
|
|
`('renders the component for column $label', ({ component, label }) => {
|
|
expect(getCellByLabel(0, label).find(component).exists()).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('when users is an empty array', () => {
|
|
beforeEach(() => {
|
|
initComponent({ users: [] });
|
|
});
|
|
|
|
it('renders a "No users found" message', () => {
|
|
expect(wrapper.text()).toContain('No users found');
|
|
});
|
|
});
|
|
});
|