Adds slot component tests
This commit is contained in:
parent
9f20c63f13
commit
1e403a7fe9
@ -55,7 +55,7 @@ class Formulate {
|
||||
FormulateInputTextArea,
|
||||
FormulateRepeatableProvider
|
||||
},
|
||||
slotDefaults: {
|
||||
slotComponents: {
|
||||
label: 'FormulateLabel',
|
||||
help: 'FormulateHelp',
|
||||
errors: 'FormulateErrors',
|
||||
@ -169,7 +169,7 @@ class Formulate {
|
||||
if (def.slotComponents && def.slotComponents[slot]) {
|
||||
return def.slotComponents[slot]
|
||||
}
|
||||
return this.options.slotDefaults[slot]
|
||||
return this.options.slotComponents[slot]
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,6 @@
|
||||
import Vue from 'vue'
|
||||
import flushPromises from 'flush-promises'
|
||||
import { mount } from '@vue/test-utils'
|
||||
import { mount, createLocalVue } from '@vue/test-utils'
|
||||
import Formulate from '@/Formulate.js'
|
||||
import FormulateInput from '@/FormulateInput.vue'
|
||||
import FormulateInputBox from '@/inputs/FormulateInputBox.vue'
|
||||
@ -177,4 +177,48 @@ describe('FormulateInput', () => {
|
||||
expect(wrapper.emitted('error-visibility').length).toBe(1)
|
||||
})
|
||||
|
||||
it('allows overriding the label default slot component', async () => {
|
||||
const localVue = createLocalVue()
|
||||
localVue.component('CustomLabel', {
|
||||
render: function (h) {
|
||||
return h('div', { class: 'custom-label' }, [`custom: ${this.context.label}`])
|
||||
},
|
||||
props: ['context']
|
||||
})
|
||||
localVue.use(Formulate, { slotComponents: { label: 'CustomLabel' } })
|
||||
const wrapper = mount(FormulateInput, { localVue, propsData: { label: 'My label here' } })
|
||||
expect(wrapper.find('.custom-label').html()).toBe('<div class="custom-label">custom: My label here</div>')
|
||||
})
|
||||
|
||||
it('allows overriding the help default slot component', async () => {
|
||||
const localVue = createLocalVue()
|
||||
localVue.component('CustomHelp', {
|
||||
render: function (h) {
|
||||
return h('small', { class: 'custom-help' }, [`custom: ${this.context.help}`])
|
||||
},
|
||||
props: ['context']
|
||||
})
|
||||
localVue.use(Formulate, { slotComponents: { help: 'CustomHelp' } })
|
||||
const wrapper = mount(FormulateInput, { localVue, propsData: { help: 'My help here' } })
|
||||
expect(wrapper.find('.custom-help').html()).toBe('<small class="custom-help">custom: My help here</small>')
|
||||
})
|
||||
|
||||
it('allows overriding the errors component', async () => {
|
||||
const localVue = createLocalVue()
|
||||
localVue.component('CustomErrors', {
|
||||
render: function (h) {
|
||||
return h('ul', { class: 'my-errors' }, this.context.visibleValidationErrors.map(message => h('li', message)))
|
||||
},
|
||||
props: ['context']
|
||||
})
|
||||
localVue.use(Formulate, { slotComponents: { errors: 'CustomErrors' } })
|
||||
const wrapper = mount(FormulateInput, { localVue, propsData: {
|
||||
help: 'My help here',
|
||||
errorBehavior: 'live',
|
||||
validation: 'required'
|
||||
} })
|
||||
await flushPromises()
|
||||
expect(wrapper.find('.my-errors').html())
|
||||
.toBe(`<ul class="my-errors">\n <li>Text is required.</li>\n</ul>`)
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user