gendesign/frontend/src/components/site-finder/__tests__/connection-capacity-format.test.ts
bot-backend f7e2dba19c
All checks were successful
CI Trade-In / changes (pull_request) Successful in 16s
CI / changes (pull_request) Successful in 16s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 2m8s
CI / openapi-codegen-check (pull_request) Successful in 3m32s
CI / backend-tests (pull_request) Successful in 16m23s
fix(site-finder): три честности-фикса — B1 ГРС + околонуль + Росреестр-квартал
1. gazprom_grs_loader: канонизация output_name «(выход №N)» → «выход №N»
   (регех + группа номера) — разнобой пробелов/регистра иначе плодил бы
   дубли по ON CONFLICT (grs_name_norm, output_name) с двойным счётом SUM.
   Прод проверен: уже канонический (0 не-канона), вычистка не нужна.
   +регресс-тесты на реальных прод-строках «(выход №N) (M)».
2. formatThousandM3Hour: 0<|v|<0.05 → 2 знака («0,04»), не «0,0» — ГРС
   «открыта», но выглядела нулём. +формат-тесты (первые на форматтеры).
3. Росреестр приходит ПОКВАРТАЛЬНО (Anton 2026-07-03): убрано «устарел»
   из offer_only/source_stale — теперь «Сделки Росреестра — за I квартал
   2026 (поставка поквартальная)». Хелперы квартала (римские I-IV) на
   фронте и бэке; статусы/логика не тронуты — только подписи.
2026-07-03 11:09:36 +05:00

45 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Unit tests for §3 «Сети» number formatters (connection-capacity.ts).
*
* Focus: honest near-zero rendering of ГРС free capacity. При 1 знаке после
* запятой «0,044 тыс. м³/ч» округлялось бы в «0,0» — ГРС с крохотной, но
* НЕнулевой свободной мощностью выглядела бы закрытой. Для 0 < |v| < 0,05
* показываем 2 знака; настоящий 0 остаётся «0,0».
*/
import { describe, expect, it } from "vitest";
import { formatThousandM3Hour } from "../connection-capacity";
// toLocaleString("ru-RU") даёт запятую-десятичную и Unicode-минус () для
// отрицательных — сверяем именно на этих формах.
describe("formatThousandM3Hour — честность околонуля", () => {
it("крохотная положительная мощность не схлопывается в 0,0", () => {
expect(formatThousandM3Hour(0.044)).toBe("0,04 тыс. м³/ч");
expect(formatThousandM3Hour("0.044")).toBe("0,04 тыс. м³/ч");
});
it("крохотная отрицательная мощность (дефицит) сохраняет знак и не нулится", () => {
// toLocaleString даёт минус (ASCII «-» или Unicode «−» в зависимости от ICU
// рантайма) + 2 знака — не «0,0». Сверяем знак + значимую часть, не глиф.
const out = formatThousandM3Hour(-0.044);
expect(out).not.toBeNull();
expect(out).toMatch(/^[-]0,04 тыс\. м³\/ч$/u);
});
it("настоящий ноль остаётся 0,0 (1 знак)", () => {
expect(formatThousandM3Hour(0)).toBe("0,0 тыс. м³/ч");
expect(formatThousandM3Hour("0")).toBe("0,0 тыс. м³/ч");
});
it("значения ≥ 0,05 — прежний 1 знак после запятой", () => {
expect(formatThousandM3Hour(1.205)).toBe("1,2 тыс. м³/ч");
expect(formatThousandM3Hour(0.05)).toBe("0,1 тыс. м³/ч");
expect(formatThousandM3Hour(42.2)).toBe("42,2 тыс. м³/ч");
});
it("null/undefined/нечисло → null (поле скрывается, не «0»)", () => {
expect(formatThousandM3Hour(null)).toBeNull();
expect(formatThousandM3Hour(undefined)).toBeNull();
expect(formatThousandM3Hour("н/д")).toBeNull();
});
});