import { describe, it, expect } from 'vitest' import { mount } from '@vue/test-utils' import StatsGrid from '@/components/StatsGrid.vue' const defaultProps = { statsArray: [ { statName: 'current Zoom', statValue: '13' }, { statName: 'current map name/type', statValue: 'OpenStreetMap' }, { statName: 'prompt: points/rectangles number', statValue: '2' }, ], } describe('StatsGrid', () => { it('renders one dl per stat item', () => { const wrapper = mount(StatsGrid, { props: defaultProps }) expect(wrapper.findAll('dl')).toHaveLength(3) }) it('renders stat names in dt elements', () => { const wrapper = mount(StatsGrid, { props: defaultProps }) const dtElements = wrapper.findAll('dt') expect(dtElements.map(dt => dt.text())).toEqual([ 'current Zoom', 'current map name/type', 'prompt: points/rectangles number', ]) }) it('renders stat values in dd elements', () => { const wrapper = mount(StatsGrid, { props: defaultProps }) const ddElements = wrapper.findAll('dd') expect(ddElements.map(dd => dd.text())).toEqual(['13', 'OpenStreetMap', '2']) }) it('renders empty when statsArray is empty', () => { const wrapper = mount(StatsGrid, { props: { statsArray: [] } }) expect(wrapper.findAll('dl')).toHaveLength(0) }) it('renders single item', () => { const wrapper = mount(StatsGrid, { props: { statsArray: [{ statName: 'zoom', statValue: '5' }] }, }) expect(wrapper.findAll('dl')).toHaveLength(1) expect(wrapper.find('dt').text()).toBe('zoom') expect(wrapper.find('dd').text()).toBe('5') }) })