diff --git a/tradein-mvp/frontend/src/app/page.tsx b/tradein-mvp/frontend/src/app/page.tsx index 834247d2..0b4bf289 100644 --- a/tradein-mvp/frontend/src/app/page.tsx +++ b/tradein-mvp/frontend/src/app/page.tsx @@ -16,7 +16,7 @@ import { HTTPError } from "@/lib/api"; import { EstimateForm } from "@/components/trade-in/EstimateForm"; import { Topbar } from "@/components/trade-in/Topbar"; import { SourcesProgress } from "@/components/trade-in/SourcesProgress"; -import { HeroSummary } from "@/components/trade-in/HeroSummary"; +import { HeroSummary, thinMarketNote } from "@/components/trade-in/HeroSummary"; import { IMVBenchmark } from "@/components/trade-in/IMVBenchmark"; import { CianValuationCard } from "@/components/trade-in/CianValuationCard"; import { HouseInfoCard } from "@/components/trade-in/HouseInfoCard"; @@ -276,6 +276,7 @@ export default function TradeInPage() { @@ -59,6 +66,7 @@ export function IMVBenchmark({ benchmark, isLoading }: Props) {
{formatRub(recommended_price)}
+ {note &&
{note}
}
Диапазон
diff --git a/tradein-mvp/frontend/src/components/trade-in/__tests__/thinMarketBadge.test.tsx b/tradein-mvp/frontend/src/components/trade-in/__tests__/thinMarketBadge.test.tsx index 01c5d7f6..ed0fa74e 100644 --- a/tradein-mvp/frontend/src/components/trade-in/__tests__/thinMarketBadge.test.tsx +++ b/tradein-mvp/frontend/src/components/trade-in/__tests__/thinMarketBadge.test.tsx @@ -12,7 +12,12 @@ import { render, screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { HeroSummary, thinMarketNote } from "../HeroSummary"; -import { FIXTURE_ESTIMATE, FIXTURE_INPUT } from "@/app/ui-preview/estimate/fixture"; +import { IMVBenchmark } from "../IMVBenchmark"; +import { + FIXTURE_ESTIMATE, + FIXTURE_IMV, + FIXTURE_INPUT, +} from "@/app/ui-preview/estimate/fixture"; import type { AggregatedEstimate, AvitoImvSummary } from "@/types/trade-in"; // Бренд и блок прозрачности ходят в сеть (TanStack Query) — к подписи отношения @@ -81,3 +86,28 @@ describe("thin_market — подпись у числа оценочной мод ); }); }); + +/** + * То же число печатается второй раз в отдельной карточке под hero. Подпись в + * hero её не покрывает: у карточки свой источник данных (imv-benchmark endpoint), + * и без проброса note рядом с итогом остаётся неподписанная копия величины. + */ +describe("IMVBenchmark — подпись доезжает до второго места с тем же числом", () => { + const NOTE = "рынок из 3 объявлений — в расчёт не входит"; + + it("note передан → подпись стоит под числом", () => { + const { container } = render( + , + ); + + expect(container.textContent).toContain(NOTE); + }); + + it("note не передан (рынок не тонкий) → подписи нет", () => { + const { container } = render( + , + ); + + expect(container.textContent).not.toContain("в расчёт не входит"); + }); +}); diff --git a/tradein-mvp/frontend/src/components/trade-in/trade-in.css b/tradein-mvp/frontend/src/components/trade-in/trade-in.css index 7cb46b9e..302bb7d2 100644 --- a/tradein-mvp/frontend/src/components/trade-in/trade-in.css +++ b/tradein-mvp/frontend/src/components/trade-in/trade-in.css @@ -846,6 +846,7 @@ .bench-chip__sub { font-size: 10px; color: var(--muted); + max-width: 240px; } /* ── empty-state headline (без данных) ── */