Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-20 18:07:34 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-20 18:07:34 +0300
commit8b61452138ecc511b52cd49be4ee6b8a80390c50 (patch)
tree122b817432c2a0f0e23767bd95791a89b20540c0 /spec/frontend/frequent_items
parentf864f8a7aafa45b0e4c04e4312f89da4b1227c0f (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/frequent_items')
-rw-r--r--spec/frontend/frequent_items/components/frequent_items_search_input_spec.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/spec/frontend/frequent_items/components/frequent_items_search_input_spec.js b/spec/frontend/frequent_items/components/frequent_items_search_input_spec.js
new file mode 100644
index 00000000000..e5f1ab21c7f
--- /dev/null
+++ b/spec/frontend/frequent_items/components/frequent_items_search_input_spec.js
@@ -0,0 +1,83 @@
+import { shallowMount, createLocalVue } from '@vue/test-utils';
+import searchComponent from '~/frequent_items/components/frequent_items_search_input.vue';
+import eventHub from '~/frequent_items/event_hub';
+
+const localVue = createLocalVue();
+
+const createComponent = (namespace = 'projects') =>
+ shallowMount(localVue.extend(searchComponent), {
+ propsData: { namespace },
+ localVue,
+ sync: false,
+ });
+
+describe('FrequentItemsSearchInputComponent', () => {
+ let wrapper;
+ let vm;
+
+ beforeEach(() => {
+ wrapper = createComponent();
+
+ ({ vm } = wrapper);
+ });
+
+ afterEach(() => {
+ vm.$destroy();
+ });
+
+ describe('methods', () => {
+ describe('setFocus', () => {
+ it('should set focus to search input', () => {
+ jest.spyOn(vm.$refs.search, 'focus').mockImplementation(() => {});
+
+ vm.setFocus();
+
+ expect(vm.$refs.search.focus).toHaveBeenCalled();
+ });
+ });
+ });
+
+ describe('mounted', () => {
+ it('should listen `dropdownOpen` event', done => {
+ jest.spyOn(eventHub, '$on').mockImplementation(() => {});
+ const vmX = createComponent().vm;
+
+ localVue.nextTick(() => {
+ expect(eventHub.$on).toHaveBeenCalledWith(
+ `${vmX.namespace}-dropdownOpen`,
+ expect.any(Function),
+ );
+ done();
+ });
+ });
+ });
+
+ describe('beforeDestroy', () => {
+ it('should unbind event listeners on eventHub', done => {
+ const vmX = createComponent().vm;
+ jest.spyOn(eventHub, '$off').mockImplementation(() => {});
+
+ vmX.$mount();
+ vmX.$destroy();
+
+ localVue.nextTick(() => {
+ expect(eventHub.$off).toHaveBeenCalledWith(
+ `${vmX.namespace}-dropdownOpen`,
+ expect.any(Function),
+ );
+ done();
+ });
+ });
+ });
+
+ describe('template', () => {
+ it('should render component element', () => {
+ expect(wrapper.classes()).toContain('search-input-container');
+ expect(wrapper.contains('input.form-control')).toBe(true);
+ expect(wrapper.contains('.search-icon')).toBe(true);
+ expect(wrapper.find('input.form-control').attributes('placeholder')).toBe(
+ 'Search your projects',
+ );
+ });
+ });
+});