Files
portal/app/tests/Unit/Autopodbor/Resolve/CompetitorResolverTest.php
T

69 lines
3.0 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
use App\Services\Autopodbor\Agent\Resolve\CompetitorResolver;
// stubPages() и autopodborFixture() — глобальные хелперы из tests/Pest.php.
it('2ГИС-в-городе найден → местная карточка (is_federal=false)', function () {
$pages = stubPages(['/firm/' => autopodborFixture('2gis-firm-kraslombard.html')]);
$r = new CompetitorResolver($pages);
$c = $r->resolve('КрасЛомбард', twoGisUrl: 'https://2gis.ru/krasnoyarsk/firm/70000001040792812', city: 'Красноярск');
expect($c->source)->toBe('2ГИС');
expect($c->isLocal())->toBeTrue();
expect($c->isFederal)->toBeFalse();
expect($c->region)->toBe('Красноярск');
expect($c->siteUrl)->toBe('http://kraslombard24.ru');
});
it('2ГИС нет, Яндекс совпал → местная карточка с Яндекса', function () {
$pages = stubPages([
'maps/?text=' => '<a href="/maps/org/kraslombard/175852236692/">org</a>',
'/maps/org/' => autopodborFixture('yandex-org-kraslombard.html'),
]);
$r = new CompetitorResolver($pages);
$c = $r->resolve('КрасЛомбард', twoGisUrl: null, city: 'Красноярск');
expect($c->source)->toBe('Яндекс.Карты');
expect($c->isLocal())->toBeTrue();
expect($c->isFederal)->toBeFalse();
});
it('2ГИС-карточка из другого города отбраковывается (не местная)', function () {
$pages = stubPages(['/firm/' => autopodborFixture('2gis-firm-kraslombard.html')]); // карточка в Красноярске
$r = new CompetitorResolver($pages);
// искали в Москве — карточка Красноярска не считается местной, Яндекса в стабе нет
$c = $r->resolve('КрасЛомбард', twoGisUrl: 'https://2gis.ru/krasnoyarsk/firm/1', city: 'Москва');
expect($c->isLocal())->toBeFalse();
});
it('ни 2ГИС, ни Яндекс, но есть сайт → федерал (is_federal=true, local=false)', function () {
$r = new CompetitorResolver(stubPages([]));
$c = $r->resolve('CarMoney', twoGisUrl: null, city: 'Москва', knownSite: 'https://carmoney.ru');
expect($c->isFederal)->toBeTrue();
expect($c->isLocal())->toBeFalse();
expect($c->siteUrl)->toBe('https://carmoney.ru');
expect($c->directoryUrl)->toBeNull();
expect($c->name)->toBe('CarMoney');
});
it('ничего не найдено и сайта нет → «нет филиала в регионе» (local=false, не федерал)', function () {
$r = new CompetitorResolver(stubPages([]));
$c = $r->resolve('Загадочная Фирма', twoGisUrl: null, city: 'Москва');
expect($c->isLocal())->toBeFalse();
expect($c->isFederal)->toBeFalse();
expect($c->directoryUrl)->toBeNull();
expect($c->name)->toBe('Загадочная Фирма');
expect($c->region)->toBe('Москва');
});