diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-05 15:09:46 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-07-05 15:09:46 +0300 |
commit | f34077e88198da754b4efecd1ce1d996ce982286 (patch) | |
tree | 24a176ba93be06eee0ee912215fbeb2611ab7872 /spec/frontend/vue_shared/components/page_size_selector_spec.js | |
parent | 402c915cb58cfc658ecbdad368e89fb7b3993c1e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/vue_shared/components/page_size_selector_spec.js')
-rw-r--r-- | spec/frontend/vue_shared/components/page_size_selector_spec.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/frontend/vue_shared/components/page_size_selector_spec.js b/spec/frontend/vue_shared/components/page_size_selector_spec.js new file mode 100644 index 00000000000..5ec0b863afd --- /dev/null +++ b/spec/frontend/vue_shared/components/page_size_selector_spec.js @@ -0,0 +1,44 @@ +import { GlDropdown, GlDropdownItem } from '@gitlab/ui'; +import { shallowMount } from '@vue/test-utils'; +import PageSizeSelector, { PAGE_SIZES } from '~/vue_shared/components/page_size_selector.vue'; + +describe('Page size selector component', () => { + let wrapper; + + const createWrapper = ({ pageSize = 20 } = {}) => { + wrapper = shallowMount(PageSizeSelector, { + propsData: { value: pageSize }, + }); + }; + + const findDropdown = () => wrapper.findComponent(GlDropdown); + const findDropdownItems = () => wrapper.findAllComponents(GlDropdownItem); + + afterEach(() => { + wrapper.destroy(); + }); + + it.each(PAGE_SIZES)('shows expected text in the dropdown button for page size %s', (pageSize) => { + createWrapper({ pageSize }); + + expect(findDropdown().props('text')).toBe(`Show ${pageSize} items`); + }); + + it('shows the expected dropdown items', () => { + createWrapper(); + + PAGE_SIZES.forEach((pageSize, index) => { + expect(findDropdownItems().at(index).text()).toBe(`Show ${pageSize} items`); + }); + }); + + it('will emit the new page size when a dropdown item is clicked', () => { + createWrapper(); + + findDropdownItems().wrappers.forEach((itemWrapper, index) => { + itemWrapper.vm.$emit('click'); + + expect(wrapper.emitted('input')[index][0]).toBe(PAGE_SIZES[index]); + }); + }); +}); |