opsdash-app/opsdash/test/DeckSummaryCard.test.ts
2026-01-13 15:18:21 +07:00

58 lines
1.8 KiB
TypeScript

import { mount } from '@vue/test-utils'
import { describe, it, expect, vi } from 'vitest'
import DeckSummaryCard from '../src/components/widgets/deck/DeckSummaryCard.vue'
const buckets = [
{ key: 'open_all', label: 'Open · All', titles: ['Card A', 'Card B'], count: 2, board: { title: 'Opsdash Board', color: '#2563EB' } },
{ key: 'open_mine', label: 'Open · Mine', titles: ['Mine 1'], count: 1, board: { title: 'Opsdash Board', color: '#2563EB' } },
]
describe('DeckSummaryCard', () => {
it('emits filter selection when rows are clicked', async () => {
const onFilter = vi.fn()
const wrapper = mount(DeckSummaryCard, {
props: {
buckets,
rangeLabel: 'Week',
loading: false,
ticker: { autoScroll: false, intervalSeconds: 5 },
activeFilter: 'open_all',
onFilter,
},
})
const rows = wrapper.findAll('.deck-summary-card__row')
await rows[1].trigger('click')
expect(onFilter).toHaveBeenCalledWith('open_mine')
})
it('highlights the active filter row', () => {
const wrapper = mount(DeckSummaryCard, {
props: {
buckets,
rangeLabel: 'Week',
loading: false,
ticker: { autoScroll: false, intervalSeconds: 5 },
activeFilter: 'open_all',
},
})
const activeRow = wrapper.find('.deck-summary-card__row--active')
expect(activeRow.exists()).toBe(true)
expect(activeRow.text()).toContain('Open · All')
})
it('hides the header when showHeader is false', () => {
const wrapper = mount(DeckSummaryCard, {
props: {
buckets,
rangeLabel: 'Week',
loading: false,
ticker: { autoScroll: false, intervalSeconds: 5 },
showHeader: false,
},
})
expect(wrapper.find('.deck-summary-card__header').exists()).toBe(false)
})
})