diff options
Diffstat (limited to 'spec/frontend/import_entities/components/group_dropdown_spec.js')
-rw-r--r-- | spec/frontend/import_entities/components/group_dropdown_spec.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/frontend/import_entities/components/group_dropdown_spec.js b/spec/frontend/import_entities/components/group_dropdown_spec.js new file mode 100644 index 00000000000..f7aa0e889ea --- /dev/null +++ b/spec/frontend/import_entities/components/group_dropdown_spec.js @@ -0,0 +1,44 @@ +import { GlSearchBoxByType, GlDropdown } from '@gitlab/ui'; +import { shallowMount } from '@vue/test-utils'; +import { nextTick } from 'vue'; +import GroupDropdown from '~/import_entities/components/group_dropdown.vue'; + +describe('Import entities group dropdown component', () => { + let wrapper; + let namespacesTracker; + + const createComponent = (propsData) => { + namespacesTracker = jest.fn(); + + wrapper = shallowMount(GroupDropdown, { + scopedSlots: { + default: namespacesTracker, + }, + stubs: { GlDropdown }, + propsData, + }); + }; + + afterEach(() => { + wrapper.destroy(); + }); + + it('passes namespaces from props to default slot', () => { + const namespaces = ['ns1', 'ns2']; + createComponent({ namespaces }); + + expect(namespacesTracker).toHaveBeenCalledWith({ namespaces }); + }); + + it('filters namespaces based on user input', async () => { + const namespaces = ['match1', 'some unrelated', 'match2']; + createComponent({ namespaces }); + + namespacesTracker.mockReset(); + wrapper.find(GlSearchBoxByType).vm.$emit('input', 'match'); + + await nextTick(); + + expect(namespacesTracker).toHaveBeenCalledWith({ namespaces: ['match1', 'match2'] }); + }); +}); |