UNPKG

@mozaic-ds/vue

Version:

Mozaic-Vue is the Vue.js implementation of ADEO Design system

99 lines (82 loc) 2.77 kB
import { describe, it, expect } from 'vitest'; import { mount } from '@vue/test-utils'; import MStepperCompact from './MStepperCompact.vue'; describe('MStepperCompact component', () => { it('renders with required label and optional description', () => { const wrapper = mount(MStepperCompact, { props: { label: 'Current Step', }, }); expect(wrapper.find('.mc-stepper-compact').exists()).toBe(true); expect(wrapper.find('.mc-stepper-compact__progress').exists()).toBe(true); expect(wrapper.find('.mc-stepper-compact__label').text()).toBe( 'Current Step', ); // description should NOT be rendered by default expect(wrapper.find('.mc-stepper-compact__description').exists()).toBe( false, ); }); it('calculates progress value correctly', () => { const wrapper = mount(MStepperCompact, { props: { label: 'Current Step', value: 2, maxSteps: 5, }, }); const progressbar = wrapper.findComponent({ name: 'MCircularProgressbar' }); expect(progressbar.props('value')).toBe(40); // (2/5) * 100 }); it('displays correct content value (current step / total)', () => { const wrapper = mount(MStepperCompact, { props: { label: 'Current Step', value: 3, maxSteps: 7, }, }); const progressbar = wrapper.findComponent({ name: 'MCircularProgressbar' }); expect(progressbar.props('contentValue')).toBe('3 / 7'); }); it('passes correct props to MCircularProgressbar', () => { const wrapper = mount(MStepperCompact, { props: { label: 'Current Step', value: 2, maxSteps: 4, }, }); const progressbar = wrapper.findComponent({ name: 'MCircularProgressbar' }); expect(progressbar.props('type')).toBe('content'); expect(progressbar.props('size')).toBe('m'); expect(progressbar.props('value')).toBe(50); // (2/4) * 100 expect(progressbar.props('contentValue')).toBe('2 / 4'); }); it('renders custom label and description when provided', () => { const wrapper = mount(MStepperCompact, { props: { label: 'Custom Label', description: 'Custom Description', }, }); expect(wrapper.find('.mc-stepper-compact__label').text()).toBe( 'Custom Label', ); expect(wrapper.find('.mc-stepper-compact__description').text()).toBe( 'Custom Description', ); }); it('does not render description element when description is empty', () => { const wrapper = mount(MStepperCompact, { props: { label: 'Label Only', description: undefined, }, }); expect(wrapper.find('.mc-stepper-compact__description').exists()).toBe( false, ); }); });