diff --git a/components/CherryBlossom.massive-scaling.test.tsx b/components/CherryBlossom.massive-scaling.test.tsx new file mode 100644 index 000000000..9a1883971 --- /dev/null +++ b/components/CherryBlossom.massive-scaling.test.tsx @@ -0,0 +1,37 @@ +import { describe, it, expect } from 'vitest'; +import { render } from '@testing-library/react'; +import CherryBlossom from './CherryBlossom'; + +describe('CherryBlossom Massive Scaling', () => { + it('renders without crashing', () => { + const { container } = render(); + expect(container).toBeTruthy(); + }); + + it('renders svg elements', () => { + const { container } = render(); + expect(container.querySelectorAll('svg').length).toBeGreaterThan(0); + }); + + it('renders petal paths', () => { + const { container } = render(); + expect(container.querySelectorAll('path').length).toBeGreaterThan(0); + }); + + it('supports multiple renders without errors', () => { + for (let i = 0; i < 20; i++) { + const { container } = render(); + expect(container).toBeTruthy(); + } + }); + + it('maintains stable structure during repeated renders', () => { + const { container, rerender } = render(); + + for (let i = 0; i < 50; i++) { + rerender(); + } + + expect(container.querySelectorAll('svg').length).toBeGreaterThan(0); + }); +}); diff --git a/components/dashboard/StatsCard.tsx b/components/dashboard/StatsCard.tsx index fabcc815a..d4cce1d79 100644 --- a/components/dashboard/StatsCard.tsx +++ b/components/dashboard/StatsCard.tsx @@ -9,11 +9,7 @@ const iconMap: Record = { GitCommit, }; -export function buildMiniChart(seed: number): number[] { - return Array.from({ length: 12 }).map((_, i) => ((seed * 17 + i * 31) % 100) + (i > 6 ? 40 : 0)); -} - -interface StatsCardProps { +export interface StatsCardProps { title: string; value: string; description: string; diff --git a/components/dashboard/StatsCard.type-compiler.test.tsx b/components/dashboard/StatsCard.type-compiler.test.tsx new file mode 100644 index 000000000..6ee370fb2 --- /dev/null +++ b/components/dashboard/StatsCard.type-compiler.test.tsx @@ -0,0 +1,33 @@ +import { describe, it, expectTypeOf } from 'vitest'; +import type { StatsCardProps } from './StatsCard'; + +describe('StatsCard Type Compiler Validation', () => { + it('accepts valid props shape', () => { + expectTypeOf().toMatchTypeOf<{ + title: string; + value: string; + description: string; + icon: string; + showUTCDisclaimer?: boolean; + utcDate?: string; + }>(); + }); + + it('requires title as string', () => { + expectTypeOf().toEqualTypeOf(); + }); + + it('requires value as string', () => { + expectTypeOf().toEqualTypeOf(); + }); + + it('requires description as string', () => { + expectTypeOf().toEqualTypeOf(); + }); + + it('allows optional UTC fields', () => { + expectTypeOf().toEqualTypeOf(); + + expectTypeOf().toEqualTypeOf(); + }); +});