diff --git a/test/VAccordion.spec.ts b/test/VAccordion.spec.ts new file mode 100644 index 0000000..aa6c1dc --- /dev/null +++ b/test/VAccordion.spec.ts @@ -0,0 +1,57 @@ +import { describe, test, expect } from 'vitest' +import { mount } from '@vue/test-utils' +import VAccordion from '../src/components/accordion/VAccordion.vue' +import VAccordionChild from '../src/components/accordion/VAccordionChild.vue' + +describe('VAccordion', () => { + const factory = () => + mount(VAccordion, { + props: { + value: '0', + }, + slots: { + default: ` + + + + + + + + + + + + + `, + }, + global: { + components: { + VAccordionChild, + }, + }, + }) + + test('renders three accordion panels', () => { + const wrapper = factory() + const panels = wrapper.findAll('.p-accordionpanel') + expect(panels).toHaveLength(3) + }) + + test('activates the first panel by default', () => { + const wrapper = factory() + const firstPanel = wrapper.findAll('.p-accordionpanel')[0] + expect(firstPanel.classes()).toContain('p-accordionpanel-active') + expect(firstPanel.attributes('data-p-active')).toBe('true') + }) + + test('disables the second panel', () => { + const wrapper = factory() + const secondPanel = wrapper.findAll('.p-accordionpanel')[1] + expect(secondPanel.classes()).toContain('p-disabled') + expect(secondPanel.attributes('data-p-disabled')).toBe('true') + expect(secondPanel.find('button').attributes('disabled')).toBeDefined() + }) +})