Проверка на удалённую в предыдущем коммите ветку. Она была недостижима, но
выглядела как рабочий элемент интерфейса — некликабельный <span>, стилизованный
под кнопку-ссылку «Росреестр ↗». Без проверки ничто не мешает ей вернуться:
достаточно снова сделать поле опциональным.
Три утверждения через настоящий mapSources: есть URL — ссылка именно на него;
URL нет — прочерк и НИ ОДНОЙ ссылки; javascript:-схема отбрасывается safeUrl,
и строка тоже получает прочерк, а не кнопку.
Проверено, что тест краснеет: возврат «Росреестр ↗» на место прочерка роняет
2 утверждения из 3.
Refs #2755
После #2747 фикстуры дизайн-макета перестали быть значением по умолчанию, но
сам слой остался: 671 строка выдуманных цен, сделок и аналитики, из которых
живыми были пять статических констант UI-хрома.
п.1 — мёртвые числовые экспорты. Проверено на потребителей: импорт, реэкспорт,
строковый/динамический доступ, тесты, .design-sync (previews берут данные из
своего `_fixtures.ts` -> `app/ui-preview/estimate/fixture`, не отсюда). Ноль у
восемнадцати экспортов. `fixtures.ts` -> `ui-config.ts`: остались dropdownOptions,
navLabels, overlayTitles, overlayNums, version. Имя файла было той же неправдой,
что и комментарии ниже. Экспорт `user` («Андрей Петров» / «Брусника» / почта)
осиротел ещё до #2747 — у TopNav свой нейтральный «Гость» — удалён вместе с
типом `User`, у которого он был единственным потребителем.
НЕ удалено, потому что живое: `sources` был мёртв, но рядом `buildSources` в
mappers.ts считает то же самое из API — удалён только фикстур. `LOCATION_FIXTURE`
в LocationDrawer оставлен: это не выдуманные числа, а честное состояние загрузки
(сплошные прочерки).
п.2 — шапка mappers.ts обещала «fixtures stay as the prop DEFAULT»; после #2747
это прямая неправда. Переписаны и она, и обоснование опциональности полей
AdRowData/DealRowData. Заодно ещё четыре обоснования, ссылавшиеся на storybook и
«ещё не подключённую» страницу: ни того, ни другого не существует.
п.3 — ветка `r.url === undefined` рисовала некликабельную кнопку-ссылку
«Росреестр ↗». Корень не в ветке, а в типе: поля были опциональными ради
фикстур, и это же породило ещё четыре недостижимых подстановки —
`?? "Avito"`, `?? "Росреестр"`, `?? "по улице"`, два `?? "—"`. Единственный
производитель этих строк — mapSources — заполняет все поля всегда, поэтому
поля сделаны обязательными: отсутствующее значение теперь ошибка компиляции,
а не выдуманный бренд на экране. Строка без ссылки рисует прочерк.
п.4 — три правила `.placeholderPanel` от удалённого в #2747 компонента, ноль
ссылок в разметке.
Замер: -759 / +125 строк. 13 проверок поведения (#2769) зелёные до и после;
проверено, что они ещё умеют краснеть — поломка mapHistory даёт 2 падения,
SaleShareList 5, ветки 429 в LoginPage 1. tsc чисто, next build зелёный,
/v2 те же 48.4 kB (фикстуры и раньше вытряхивались tree-shaking'ом — ещё одно
подтверждение нуля потребителей), eslint те же два предсуществующих
предупреждения.
Refs #2755