Adds slot component tests
This commit is contained in:
parent
9f20c63f13
commit
1e403a7fe9
@ -55,7 +55,7 @@ class Formulate {
|
|||||||
FormulateInputTextArea,
|
FormulateInputTextArea,
|
||||||
FormulateRepeatableProvider
|
FormulateRepeatableProvider
|
||||||
},
|
},
|
||||||
slotDefaults: {
|
slotComponents: {
|
||||||
label: 'FormulateLabel',
|
label: 'FormulateLabel',
|
||||||
help: 'FormulateHelp',
|
help: 'FormulateHelp',
|
||||||
errors: 'FormulateErrors',
|
errors: 'FormulateErrors',
|
||||||
@ -169,7 +169,7 @@ class Formulate {
|
|||||||
if (def.slotComponents && def.slotComponents[slot]) {
|
if (def.slotComponents && def.slotComponents[slot]) {
|
||||||
return 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 Vue from 'vue'
|
||||||
import flushPromises from 'flush-promises'
|
import flushPromises from 'flush-promises'
|
||||||
import { mount } from '@vue/test-utils'
|
import { mount, createLocalVue } from '@vue/test-utils'
|
||||||
import Formulate from '@/Formulate.js'
|
import Formulate from '@/Formulate.js'
|
||||||
import FormulateInput from '@/FormulateInput.vue'
|
import FormulateInput from '@/FormulateInput.vue'
|
||||||
import FormulateInputBox from '@/inputs/FormulateInputBox.vue'
|
import FormulateInputBox from '@/inputs/FormulateInputBox.vue'
|
||||||
@ -177,4 +177,48 @@ describe('FormulateInput', () => {
|
|||||||
expect(wrapper.emitted('error-visibility').length).toBe(1)
|
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