@mozaic-ds/vue
Version:
Mozaic-Vue is the Vue.js implementation of ADEO Design system
166 lines (143 loc) • 4.6 kB
text/typescript
import { mount } from '@vue/test-utils';
import { describe, it, expect } from 'vitest';
import MFieldGroup from './MFieldGroup.vue';
describe('MFieldGroup component', () => {
it('should render label correctly', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
},
});
const label = wrapper.find('legend');
expect(label.exists()).toBe(true);
expect(label.text()).toBe('Field Label');
});
it('should render requirement text if provided', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
requirementText: 'required',
},
});
const requirementText = wrapper.find('.mc-field__requirement');
expect(requirementText.exists()).toBe(true);
expect(requirementText.text()).toBe('(required)');
});
it('should not render requirement text if not provided', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
},
});
const requirementText = wrapper.find('.mc-field__requirement');
expect(requirementText.exists()).toBe(false);
});
it('should render help text if provided', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
helpText: 'This is some help text.',
},
});
const helpText = wrapper.find('.mc-field__help');
expect(helpText.exists()).toBe(true);
expect(helpText.text()).toBe('This is some help text.');
});
it('should not render help text if not provided', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
},
});
const helpText = wrapper.find('.mc-field__help');
expect(helpText.exists()).toBe(false);
});
it('should apply is-valid class when isValid prop is true', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
isValid: true,
message: 'Valid input',
},
});
expect(wrapper.find('.mc-field__validation-message').classes()).toContain(
'is-valid',
);
expect(wrapper.find('.mc-field__validation-message').text()).toBe(
'Valid input',
);
});
it('should apply is-invalid class when isInvalid prop is true', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
isInvalid: true,
message: 'Invalid input',
},
});
expect(wrapper.find('.mc-field__validation-message').classes()).toContain(
'is-invalid',
);
expect(wrapper.find('.mc-field__validation-message').text()).toBe(
'Invalid input',
);
});
it('should render a validation message only when isValid or isInvalid is true and message is provided', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
isValid: true,
message: 'This is a valid input',
},
});
const validationMessage = wrapper.find('.mc-field__validation-message');
expect(validationMessage.exists()).toBe(true);
expect(validationMessage.text()).toBe('This is a valid input');
});
it('should render the form element passed in the slot', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
},
slots: {
default: '<input type="text" />',
},
});
const input = wrapper.find('input');
expect(input.exists()).toBe(true);
expect(input.attributes('type')).toBe('text');
});
it('should render validation message when isInvalid is true and message is provided', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
isInvalid: true,
message: 'There is an error',
},
});
const validationMessage = wrapper.find('.mc-field__validation-message');
expect(validationMessage.exists()).toBe(true);
expect(validationMessage.text()).toBe('There is an error');
});
it('should not render validation message when message is not provided', () => {
const wrapper = mount(MFieldGroup, {
props: {
id: 'input-id',
legend: 'Field Label',
isValid: true,
},
});
const validationMessage = wrapper.find('.mc-field__validation-message');
expect(validationMessage.exists()).toBe(false);
});
});