diff --git a/src/components/base/filtered_search/filtered_search.spec.js b/src/components/base/filtered_search/filtered_search.spec.js index ae5b75934b6621e1a43051d18158d4d8183f9c0f..e5733b8e1be7648c05004d0ceda6faa938b076b2 100644 --- a/src/components/base/filtered_search/filtered_search.spec.js +++ b/src/components/base/filtered_search/filtered_search.spec.js @@ -442,6 +442,20 @@ describe('Filtered search', () => { wrapper.findComponent(GlFilteredSearchTerm).vm.$emit('submit'); expect(wrapper.emitted('submit')).toBeDefined(); }); + + it('emits "change" event when token is complete', async () => { + createComponent({ + value: ['one', { type: 'faketoken', value: '' }], + }); + + await nextTick(); + wrapper.findComponent(FakeToken).vm.$emit('activate'); + await nextTick(); + + expect(wrapper.emitted('change')).toBeUndefined(); + wrapper.findComponent(FakeToken).vm.$emit('complete'); + expect(wrapper.emitted('change')).toHaveLength(1); + }); }); it('normalizes term tokens to strings on submit', () => { diff --git a/src/components/base/filtered_search/filtered_search.vue b/src/components/base/filtered_search/filtered_search.vue index 1aa77f41bd78462e4d2aa898adfe4d82b4d5f39f..065acc611f5c4be103b268f64bd14228c77d1702 100644 --- a/src/components/base/filtered_search/filtered_search.vue +++ b/src/components/base/filtered_search/filtered_search.vue @@ -376,6 +376,10 @@ export default { } else { this.activeTokenIdx = null; } + /** + * Emitted when token is completed + */ + this.$emit('change'); }, submit() {