- шкала по часовым точкам измерений: капсулы с долей проблемных прогонов, пресеты «Сейчас / −1 ч / −6 ч / −24 ч / −7 д», кнопки и клавиши ← → - статусы блокировок — цветные IconTile, короткие подписи сервисов с иконками брендов, колонка «Доступно X из Y» с полосой - GeoIP: флаги стран в ячейках, расхождение с большинством подсвечено, колонка «Страна · совпадает N/M»; расхождения считаются по сервисам - флаг страны VPS в первой колонке, фильтры и вид в шапке матрицы - демо-данные: неделя истории прогонов по полному списку сервисов Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
812 B
TypeScript
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)
|
|
})
|
|
})
|