'окна'], includeFederal:true, maxCompetitors:15); expect($fReq->regionCode)->toBe(16)->and($fReq->examples)->toContain('okna.ru')->and($fReq->includeFederal)->toBeTrue(); $fRes = new FindCompetitorsResult(competitors:[['name'=>'Окна Комфорт','relevance_pct'=>100]]); expect($fRes->competitors[0]['name'])->toBe('Окна Комфорт'); $sReq = new StudyCompetitorRequest(competitor:['name'=>'Окна Комфорт','site_url'=>'okna.ru'], regionCode:16); expect($sReq->competitor['site_url'])->toBe('okna.ru')->and($sReq->regionCode)->toBe(16); $sRes = new StudyCompetitorResult(sources:[['signal_type'=>'site','identifier'=>'okna.ru']]); expect($sRes->sources[0]['signal_type'])->toBe('site'); $rReq = new ResolveByNameRequest(name:'Окна Комфорт', regionCode:16); expect($rReq->name)->toBe('Окна Комфорт'); $rRes = new ResolveByNameResult(candidates:[['name'=>'Окна Комфорт']]); expect($rRes->candidates)->toHaveCount(1); });