Files
portal/app/tests/Unit/Autopodbor/Study/AnchorGateTest.php
T

45 lines
2.8 KiB
PHP
Raw Normal View History

<?php
use App\Services\Autopodbor\Agent\Study\AnchorGate;
use App\Services\Autopodbor\Agent\Study\DomainKinship;
function gate(): AnchorGate
{
return new AnchorGate(new DomainKinship);
}
it('сайт: seed — точно она', function () {
expect(gate()->siteVerified('kraslombard24.ru', 'kraslombard24.ru', '', [], ''))->toBeTrue();
});
it('сайт: близнец — точно она', function () {
// seedRaw = seed-домен (как в реальном вызове коллектора: siteVerified(..., $fp->seedDomain, ...));
// близнец красломбард.рф ↔ kraslombard24.ru распознаётся через DomainKinship.
expect(gate()->siteVerified('красломбард.рф', 'kraslombard24.ru', 'kraslombard24.ru', [], '<html></html>'))->toBeTrue();
});
it('сайт: чужой с якорным телефоном на странице — точно она', function () {
expect(gate()->siteVerified('other.ru', 'kraslombard24.ru', '', ['73912920000'], '...тел 8 (391) 292-00-00 = 73912920000...'))->toBeTrue();
});
it('сайт: чужой без якоря и без ссылки на seed — нет', function () {
expect(gate()->siteVerified('sberbank.ru', 'kraslombard24.ru', '', [], '<html>чужое</html>'))->toBeFalse();
});
it('карточка: сайт с seed — keep', function () {
expect(gate()->cardKept('http://kraslombard24.ru/?utm=2gis', '', 'kraslombard24.ru', []))->toBeTrue();
});
it('карточка: телефон-якорь — keep', function () {
expect(gate()->cardKept(null, '73912920000', 'kraslombard24.ru', ['73912920000' => true]))->toBeTrue();
});
it('карточка: чужая — drop', function () {
expect(gate()->cardKept('http://alien.ru', '79990000000', 'kraslombard24.ru', ['73912920000' => true]))->toBeFalse();
});
it('карточка: якоря нет совсем (ни seed, ни цифр) — drop (слепую находку не берём)', function () {
// Раньше тут был keep-всё — источник шума: без сайта фильтр пропускал стоматологию/салоны.
expect(gate()->cardKept(null, '', '', []))->toBeFalse()
->and(gate()->cardKept('http://alien.ru', '79990000000', '', []))->toBeFalse();
});
it('карточка: якорь только по телефону клиента (сайта нет) — держит своё, режет чужое', function () {
// Элемент без сайта, но клиент привязал карточку с номером 73912002005 → он в якоре.
$anchor = ['73912002005' => true];
expect(gate()->cardKept(null, '73912002005', '', $anchor))->toBeTrue() // своё
->and(gate()->cardKept('http://salon.ru', '73912303303', '', $anchor))->toBeFalse(); // чужой салон
});