Files
vps-tracker/apps/web/src/components/censorcheck/status-matrix-cell.test.ts
T
DenozordecandClaude Opus 5.5 8ae07628c6 feat(web): шкала времени и наглядные матрицы на страницах блокировок и GeoIP
- шкала по часовым точкам измерений: капсулы с долей проблемных прогонов,
  пресеты «Сейчас / −1 ч / −6 ч / −24 ч / −7 д», кнопки и клавиши ← →
- статусы блокировок — цветные IconTile, короткие подписи сервисов
  с иконками брендов, колонка «Доступно X из Y» с полосой
- GeoIP: флаги стран в ячейках, расхождение с большинством подсвечено,
  колонка «Страна · совпадает N/M»; расхождения считаются по сервисам
- флаг страны VPS в первой колонке, фильтры и вид в шапке матрицы
- демо-данные: неделя истории прогонов по полному списку сервисов

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 03:06:21 +07:00

25 lines
812 B
TypeScript

import { describe, expect, it } from 'vitest'
import {
BanIcon,
CheckIcon,
CircleAlertIcon,
ClockIcon,
CornerUpRightIcon,
XIcon,
} from 'lucide-react'
import { MATRIX_STATUS } from './status-matrix-cell'
describe('MATRIX_STATUS', () => {
it('статусы — lucide-иконки, не текст ОК/Блок', () => {
expect(MATRIX_STATUS.available.icon).toBe(CheckIcon)
expect(MATRIX_STATUS.available.tone).toBe('text-success')
expect(MATRIX_STATUS.blocked.icon).toBe(XIcon)
expect(MATRIX_STATUS.blocked.tone).toBe('text-destructive')
expect(MATRIX_STATUS.denied.icon).toBe(BanIcon)
expect(MATRIX_STATUS.timeout.icon).toBe(ClockIcon)
expect(MATRIX_STATUS.redirected.icon).toBe(CornerUpRightIcon)
expect(MATRIX_STATUS.error.icon).toBe(CircleAlertIcon)
})
})