Files
portal/app/tests/Unit/Autopodbor/Resolve/ResolvedCompetitorTest.php
T
Дмитрий 2cf8b74763 feat(автоподбор): шаг 1 A1 — DTO ResolvedCompetitor (фундамент резолвера)
Карточка резолва имени: name/site/phones/directoryUrl/source/region/description/
isFederal + isLocal(). Без ИНН (решение владельца). Офлайн-тест 3/3.
Фундамент под-блока A плана шага 1.

НЕ на проде, воркстри avtopodbor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:37:05 +03:00

48 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
use App\Services\Autopodbor\Agent\Resolve\ResolvedCompetitor;
it('несёт поля карточки и разумные значения по умолчанию', function () {
$c = new ResolvedCompetitor(
name: 'КрасЛомбард',
siteUrl: 'kraslombard24.ru',
phones: ['73912920000'],
directoryUrl: 'https://2gis.ru/krasnoyarsk/firm/111',
source: '2ГИС',
region: 'Красноярск',
description: 'Ломбард, автоломбард',
isFederal: false,
);
expect($c->name)->toBe('КрасЛомбард');
expect($c->siteUrl)->toBe('kraslombard24.ru');
expect($c->phones)->toBe(['73912920000']);
expect($c->directoryUrl)->toBe('https://2gis.ru/krasnoyarsk/firm/111');
expect($c->source)->toBe('2ГИС');
expect($c->region)->toBe('Красноярск');
expect($c->description)->toBe('Ломбард, автоломбард');
expect($c->isFederal)->toBeFalse();
});
it('минимальная карточка: только имя, остальное по умолчанию', function () {
$c = new ResolvedCompetitor(name: 'Только Имя');
expect($c->name)->toBe('Только Имя');
expect($c->siteUrl)->toBeNull();
expect($c->phones)->toBe([]);
expect($c->directoryUrl)->toBeNull();
expect($c->source)->toBeNull();
expect($c->region)->toBeNull();
expect($c->description)->toBeNull();
expect($c->isFederal)->toBeFalse();
// local=false ⇒ нет местной карточки: ни 2ГИС, ни Яндекс
expect($c->isLocal())->toBeFalse();
});
it('isLocal() истинно, когда есть ссылка на карточку справочника', function () {
$c = new ResolvedCompetitor(name: 'X', directoryUrl: 'https://2gis.ru/krasnoyarsk/firm/9', source: '2ГИС');
expect($c->isLocal())->toBeTrue();
});