diff options
Diffstat (limited to 'spec/javascripts/ide/components/shared/tokened_input_spec.js')
-rw-r--r-- | spec/javascripts/ide/components/shared/tokened_input_spec.js | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/spec/javascripts/ide/components/shared/tokened_input_spec.js b/spec/javascripts/ide/components/shared/tokened_input_spec.js deleted file mode 100644 index 885fd976655..00000000000 --- a/spec/javascripts/ide/components/shared/tokened_input_spec.js +++ /dev/null @@ -1,133 +0,0 @@ -import Vue from 'vue'; -import mountComponent from 'spec/helpers/vue_mount_component_helper'; -import TokenedInput from '~/ide/components/shared/tokened_input.vue'; - -const TEST_PLACEHOLDER = 'Searching in test'; -const TEST_TOKENS = [ - { label: 'lorem', id: 1 }, - { label: 'ipsum', id: 2 }, - { label: 'dolar', id: 3 }, -]; -const TEST_VALUE = 'lorem'; - -function getTokenElements(vm) { - return Array.from(vm.$el.querySelectorAll('.filtered-search-token button')); -} - -function createBackspaceEvent() { - const e = new Event('keyup'); - e.keyCode = 8; - e.which = e.keyCode; - e.altKey = false; - e.ctrlKey = true; - e.shiftKey = false; - e.metaKey = false; - return e; -} - -describe('IDE shared/TokenedInput', () => { - const Component = Vue.extend(TokenedInput); - let vm; - - beforeEach(() => { - vm = mountComponent(Component, { - tokens: TEST_TOKENS, - placeholder: TEST_PLACEHOLDER, - value: TEST_VALUE, - }); - - spyOn(vm, '$emit'); - }); - - afterEach(() => { - vm.$destroy(); - }); - - it('renders tokens', () => { - const renderedTokens = getTokenElements(vm).map(x => x.textContent.trim()); - - expect(renderedTokens).toEqual(TEST_TOKENS.map(x => x.label)); - }); - - it('renders input', () => { - expect(vm.$refs.input).toBeTruthy(); - expect(vm.$refs.input).toHaveValue(TEST_VALUE); - }); - - it('renders placeholder, when tokens are empty', done => { - vm.tokens = []; - - vm.$nextTick() - .then(() => { - expect(vm.$refs.input).toHaveAttr('placeholder', TEST_PLACEHOLDER); - }) - .then(done) - .catch(done.fail); - }); - - it('triggers "removeToken" on token click', () => { - getTokenElements(vm)[0].click(); - - expect(vm.$emit).toHaveBeenCalledWith('removeToken', TEST_TOKENS[0]); - }); - - it('when input triggers backspace event, it calls "onBackspace"', () => { - spyOn(vm, 'onBackspace'); - - vm.$refs.input.dispatchEvent(createBackspaceEvent()); - vm.$refs.input.dispatchEvent(createBackspaceEvent()); - - expect(vm.onBackspace).toHaveBeenCalledTimes(2); - }); - - it('triggers "removeToken" on backspaces when value is empty', () => { - vm.value = ''; - - vm.onBackspace(); - - expect(vm.$emit).not.toHaveBeenCalled(); - expect(vm.backspaceCount).toEqual(1); - - vm.onBackspace(); - - expect(vm.$emit).toHaveBeenCalledWith('removeToken', TEST_TOKENS[TEST_TOKENS.length - 1]); - expect(vm.backspaceCount).toEqual(0); - }); - - it('does not trigger "removeToken" on backspaces when value is not empty', () => { - vm.onBackspace(); - vm.onBackspace(); - - expect(vm.backspaceCount).toEqual(0); - expect(vm.$emit).not.toHaveBeenCalled(); - }); - - it('does not trigger "removeToken" on backspaces when tokens are empty', () => { - vm.tokens = []; - - vm.onBackspace(); - vm.onBackspace(); - - expect(vm.backspaceCount).toEqual(0); - expect(vm.$emit).not.toHaveBeenCalled(); - }); - - it('triggers "focus" on input focus', () => { - vm.$refs.input.dispatchEvent(new Event('focus')); - - expect(vm.$emit).toHaveBeenCalledWith('focus'); - }); - - it('triggers "blur" on input blur', () => { - vm.$refs.input.dispatchEvent(new Event('blur')); - - expect(vm.$emit).toHaveBeenCalledWith('blur'); - }); - - it('triggers "input" with value on input change', () => { - vm.$refs.input.value = 'something-else'; - vm.$refs.input.dispatchEvent(new Event('input')); - - expect(vm.$emit).toHaveBeenCalledWith('input', 'something-else'); - }); -}); |