diff options
Diffstat (limited to 'spec/frontend/__helpers__/stub_component.js')
-rw-r--r-- | spec/frontend/__helpers__/stub_component.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/spec/frontend/__helpers__/stub_component.js b/spec/frontend/__helpers__/stub_component.js index 45550450517..96fe3a8bc45 100644 --- a/spec/frontend/__helpers__/stub_component.js +++ b/spec/frontend/__helpers__/stub_component.js @@ -1,7 +1,32 @@ +/** + * Returns a new object with keys pointing to stubbed methods + * + * This is helpful for stubbing components like GlModal where it's supported + * in the API to call `.show()` and `.hide()` ([Bootstrap Vue docs][1]). + * + * [1]: https://bootstrap-vue.org/docs/components/modal#using-show-hide-and-toggle-component-methods + * + * @param {Object} methods - Object whose keys will be in the returned object. + */ +const createStubbedMethods = (methods = {}) => { + if (!methods) { + return {}; + } + + return Object.keys(methods).reduce( + (acc, key) => + Object.assign(acc, { + [key]: () => {}, + }), + {}, + ); +}; + export function stubComponent(Component, options = {}) { return { props: Component.props, model: Component.model, + methods: createStubbedMethods(Component.methods), // Do not render any slots/scoped slots except default // This differs from VTU behavior which renders all slots template: '<div><slot></slot></div>', |