import Vue from 'vue' import { mount } from '@vue/test-utils' import flushPromises from 'flush-promises' import Formulario from '@/index.ts' import FormularioFieldGroup from '@/FormularioFieldGroup.vue' import FormularioForm from '@/FormularioForm.vue' Vue.use(Formulario) describe('FormularioFieldGroup', () => { test('grouped fields to be set', async () => { const wrapper = mount(FormularioForm, { slots: { default: ` ` } }) expect(wrapper.findAll('input[type="text"]').length).toBe(1) wrapper.find('input[type="text"]').setValue('test') wrapper.find('form').trigger('submit') await flushPromises() const emitted = wrapper.emitted() expect(emitted['submit']).toBeTruthy() expect(emitted['submit']).toEqual([[{ group: { text: 'test' } }]]) }) test('grouped fields to be got', async () => { const wrapper = mount(FormularioForm, { propsData: { state: { group: { text: 'Group text' }, text: 'Text', }, }, slots: { default: ` ` } }) expect(wrapper.find('input[type="text"]').element['value']).toBe('Group text') }) test('data reactive with grouped fields', async () => { const wrapper = mount({ data: () => ({ values: {} }), template: ` {{ values.group.text }} ` }) expect(wrapper.find('span').text()).toBe('') wrapper.find('input[type="text"]').setValue('test') await flushPromises() expect(wrapper.find('span').text()).toBe('test') }) test('errors are set for grouped fields', async () => { const wrapper = mount(FormularioForm, { propsData: { fieldsErrors: { 'address.street': ['Test error'] } }, slots: { default: ` {{ error }} `, }, }) expect(wrapper.findAll('span').length).toBe(1) }) })