/ — резолвер его терпит и срезает $url = 'https://yandex.ru/maps/org/kraslombard/175852236692/?ll=92.8%2C56.0&z=16'; $c = (new YandexResolver)->parse(yandexFixture(), $url, expectName: 'КрасЛомбард', city: 'Красноярск'); expect($c)->not->toBeNull(); expect($c->name)->toBe('КрасЛомбард'); // первый сегмент title expect($c->siteUrl)->toBe('http://kraslombard24.ru'); // чистый сайт (itemprop=url), без utm expect($c->siteUrl)->not->toContain('utm_'); expect($c->phones)->not->toBeEmpty(); expect($c->phones)->toContain('73912828585'); // нормализован к 7XXXXXXXXXX expect($c->region)->toBe('Красноярск'); // город — последний сегмент title expect($c->description)->toContain('Ломбард'); // categories[].name expect($c->source)->toBe('Яндекс.Карты'); expect($c->directoryUrl)->toBe('https://yandex.ru/maps/org/kraslombard/175852236692'); // ?ll срезан, слеш убран expect($c->isLocal())->toBeTrue(); expect($c->isFederal)->toBeFalse(); }); it('отбраковывает карточку из другого города (чужая фирма того же имени)', function () { $url = 'https://yandex.ru/maps/org/kraslombard/175852236692/'; // имя совпало, но искали в Москве, а карточка — в Красноярске → не наша $c = (new YandexResolver)->parse(yandexFixture(), $url, expectName: 'КрасЛомбард', city: 'Москва'); expect($c)->toBeNull(); }); it('отбраковывает карточку с чужим именем', function () { $url = 'https://yandex.ru/maps/org/kraslombard/175852236692/'; $c = (new YandexResolver)->parse(yandexFixture(), $url, expectName: 'Совсем Другая Фирма', city: 'Красноярск'); expect($c)->toBeNull(); }); it('возвращает null на пустой оболочке без данных карточки', function () { $c = (new YandexResolver)->parse( 'Яндекс Карты', 'https://yandex.ru/maps/org/x/1', expectName: 'X', city: 'Красноярск', ); expect($c)->toBeNull(); });