2019-12-04 20:38:33 +05:30
|
|
|
import { mount } from '@vue/test-utils';
|
2022-04-04 11:22:00 +05:30
|
|
|
import { nextTick } from 'vue';
|
2020-01-01 13:55:28 +05:30
|
|
|
import { TEST_HOST } from 'helpers/test_constants';
|
2021-03-08 18:12:59 +05:30
|
|
|
import UsersMockHelper from 'helpers/user_mock_data_helper';
|
2019-12-04 20:38:33 +05:30
|
|
|
import AssigneeAvatarLink from '~/sidebar/components/assignees/assignee_avatar_link.vue';
|
2021-03-11 19:13:27 +05:30
|
|
|
import UncollapsedAssigneeList from '~/sidebar/components/assignees/uncollapsed_assignee_list.vue';
|
2019-12-04 20:38:33 +05:30
|
|
|
import userDataMock from '../../user_data_mock';
|
|
|
|
|
|
|
|
const DEFAULT_RENDER_COUNT = 5;
|
|
|
|
|
|
|
|
describe('UncollapsedAssigneeList component', () => {
|
|
|
|
let wrapper;
|
|
|
|
|
2021-12-11 22:18:48 +05:30
|
|
|
function createComponent(props = {}, glFeatures = {}) {
|
2019-12-04 20:38:33 +05:30
|
|
|
const propsData = {
|
|
|
|
users: [],
|
|
|
|
rootPath: TEST_HOST,
|
|
|
|
...props,
|
|
|
|
};
|
|
|
|
|
|
|
|
wrapper = mount(UncollapsedAssigneeList, {
|
|
|
|
propsData,
|
2021-12-11 22:18:48 +05:30
|
|
|
provide: { glFeatures },
|
2019-12-04 20:38:33 +05:30
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
wrapper.destroy();
|
|
|
|
});
|
|
|
|
|
|
|
|
const findMoreButton = () => wrapper.find('.user-list-more button');
|
|
|
|
|
|
|
|
describe('One assignee/user', () => {
|
|
|
|
let user;
|
|
|
|
|
|
|
|
beforeEach(() => {
|
|
|
|
user = userDataMock();
|
|
|
|
|
|
|
|
createComponent({
|
|
|
|
users: [user],
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('only has one user', () => {
|
|
|
|
expect(wrapper.findAll(AssigneeAvatarLink).length).toBe(1);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('calls the AssigneeAvatarLink with the proper props', () => {
|
|
|
|
expect(wrapper.find(AssigneeAvatarLink).exists()).toBe(true);
|
|
|
|
expect(wrapper.find(AssigneeAvatarLink).props().tooltipPlacement).toEqual('left');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Shows one user with avatar, username and author name', () => {
|
|
|
|
expect(wrapper.text()).toContain(user.name);
|
|
|
|
expect(wrapper.text()).toContain(`@${user.username}`);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('n+ more label', () => {
|
|
|
|
describe('when users count is rendered users', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
createComponent({
|
|
|
|
users: UsersMockHelper.createNumberRandomUsers(DEFAULT_RENDER_COUNT),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('does not show more label', () => {
|
|
|
|
expect(findMoreButton().exists()).toBe(false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('when more than rendered users', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
createComponent({
|
|
|
|
users: UsersMockHelper.createNumberRandomUsers(DEFAULT_RENDER_COUNT + 1),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('shows "+1 more" label', () => {
|
|
|
|
expect(findMoreButton().text()).toBe('+ 1 more');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('shows truncated users', () => {
|
|
|
|
expect(wrapper.findAll(AssigneeAvatarLink).length).toBe(DEFAULT_RENDER_COUNT);
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('when more button is clicked', () => {
|
2022-04-04 11:22:00 +05:30
|
|
|
beforeEach(async () => {
|
2019-12-04 20:38:33 +05:30
|
|
|
findMoreButton().trigger('click');
|
|
|
|
|
2022-04-04 11:22:00 +05:30
|
|
|
await nextTick();
|
2019-12-04 20:38:33 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
it('shows "show less" label', () => {
|
|
|
|
expect(findMoreButton().text()).toBe('- show less');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('shows all users', () => {
|
|
|
|
expect(wrapper.findAll(AssigneeAvatarLink).length).toBe(DEFAULT_RENDER_COUNT + 1);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2021-12-11 22:18:48 +05:30
|
|
|
|
|
|
|
describe('merge requests', () => {
|
|
|
|
it.each`
|
|
|
|
numberOfUsers
|
|
|
|
${1}
|
|
|
|
${5}
|
|
|
|
`('displays as a vertical list for $numberOfUsers of users', ({ numberOfUsers }) => {
|
|
|
|
createComponent(
|
|
|
|
{
|
|
|
|
users: UsersMockHelper.createNumberRandomUsers(numberOfUsers),
|
|
|
|
issuableType: 'merge_request',
|
|
|
|
},
|
|
|
|
{ mrAttentionRequests: true },
|
|
|
|
);
|
|
|
|
|
|
|
|
expect(wrapper.findAll('[data-testid="username"]').length).toBe(numberOfUsers);
|
|
|
|
});
|
|
|
|
});
|
2019-12-04 20:38:33 +05:30
|
|
|
});
|