Ф1Ф2' .'дубльне филиал'; $links = (new DirectoryParser)->parseBranchList($html); expect($links)->toBe(['/krasnoyarsk/firm/111', '/krasnoyarsk/firm/222']); }); it('берёт ссылки на филиалы, даже когда они в данных страницы, а не в href', function () { // 2ГИС иногда рендерит карточки без чистого href — ссылка лежит в JSON-состоянии страницы $html = '{"items":[{"link":"/krasnoyarsk/firm/111"},{"link":"/krasnoyarsk/firm/222"}]}' .'дубль'; $links = (new DirectoryParser)->parseBranchList($html); expect($links)->toBe(['/krasnoyarsk/firm/111', '/krasnoyarsk/firm/222']); }); it('из карточки 2ГИС берёт телефон из tel: и адрес из заголовка', function () { $html = 'КрасЛомбард, улица Ладо Кецховели, 30, Красноярск — 2ГИС' .'

КрасЛомбард

+7 (391) 2...'; $cards = (new DirectoryParser)->parseFirmCard($html, 'https://2gis.ru/krasnoyarsk/firm/111', '2ГИС'); expect($cards)->toHaveCount(1); expect($cards[0]->number)->toBe('+73912920000'); expect($cards[0]->office)->toBe('улица Ладо Кецховели, 30'); expect($cards[0]->url)->toBe('https://2gis.ru/krasnoyarsk/firm/111'); expect($cards[0]->source)->toBe('2ГИС'); }); it('схлопывает неразрывные/двойные пробелы в адресе из заголовка', function () { $html = "КрасЛомбард,\u{00A0}улица Весны,\u{00A0}7а, Красноярск — 2ГИС" .'x'; $cards = (new DirectoryParser)->parseFirmCard($html, 'u', '2ГИС'); expect($cards[0]->office)->toBe('улица Весны, 7а'); });