Files
Ho Ngoc Hai ccb82fddf8 feat(cache): implement Redis caching for search & analytics hot paths
- Add TTL-specific cache durations: district stats (5min), market report (15min), heatmap (5min)
- Add Redis caching to GeoSearch handler with 60s TTL
- Add cache invalidation on listing.approved, listing.updated, listing.deactivated, listing.sold events
- Invalidate search, geo_search, and all analytics cache prefixes on listing state changes
- Update tests for new CacheService dependency in event handler and geo-search handler

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-08 22:51:16 +07:00

36 lines
1.2 KiB
TypeScript

import { render, screen } from '@testing-library/react';
import { describe, expect, it } from 'vitest';
import { Badge } from '../badge';
describe('Badge', () => {
it('renders with text content', () => {
render(<Badge>Active</Badge>);
expect(screen.getByText('Active')).toBeInTheDocument();
});
it('applies default variant styles', () => {
render(<Badge data-testid="badge">Default</Badge>);
expect(screen.getByTestId('badge')).toHaveClass('bg-primary');
});
it('applies destructive variant', () => {
render(<Badge data-testid="badge" variant="destructive">Error</Badge>);
expect(screen.getByTestId('badge')).toHaveClass('bg-destructive');
});
it('applies success variant', () => {
render(<Badge data-testid="badge" variant="success">OK</Badge>);
expect(screen.getByTestId('badge')).toHaveClass('bg-green-100');
});
it('applies warning variant', () => {
render(<Badge data-testid="badge" variant="warning">Warn</Badge>);
expect(screen.getByTestId('badge')).toHaveClass('bg-yellow-100');
});
it('applies custom className', () => {
render(<Badge data-testid="badge" className="extra">Custom</Badge>);
expect(screen.getByTestId('badge')).toHaveClass('extra');
});
});