samgis / static /tests /StatsGrid.test.ts
alessandro trinca tornidor
test: add some test cases for various vuejs components
21277d0
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')
})
})