/** * Component tests for ContributionHeatmap. * Validates rendering with heatmap day data. */ import { describe, it, expect } from 'vitest'; import { mount } from '@vue/test-utils'; import ContributionHeatmap from '@/components/charts/ContributionHeatmap.vue'; const mockDays = [ { date: '2026-01-15', commits: 3, prsCreated: 1, prsMerged: 0, tasksCompleted: 2 }, { date: '2026-01-16', commits: 0, prsCreated: 0, prsMerged: 0, tasksCompleted: 0 }, { date: '2026-01-17', commits: 8, prsCreated: 2, prsMerged: 1, tasksCompleted: 4 }, { date: '2026-01-18', commits: 1, prsCreated: 0, prsMerged: 0, tasksCompleted: 1 }, ]; describe('ContributionHeatmap', () => { it('should mount with days data', () => { const wrapper = mount(ContributionHeatmap, { props: { days: mockDays }, }); expect(wrapper.exists()).toBe(true); }); it('should have heatmap container', () => { const wrapper = mount(ContributionHeatmap, { props: { days: mockDays }, }); expect(wrapper.find('.contribution-heatmap').exists()).toBe(true); }); it('should handle empty days gracefully', () => { const wrapper = mount(ContributionHeatmap, { props: { days: [] }, }); expect(wrapper.exists()).toBe(true); }); it('should handle single day', () => { const wrapper = mount(ContributionHeatmap, { props: { days: [{ date: '2026-04-01', commits: 5, prsCreated: 1, prsMerged: 1, tasksCompleted: 3 }], }, }); expect(wrapper.exists()).toBe(true); }); });