$group) { $original .= '
'.chr(97 + $index).') '.$group['name'].'
Cadeias de valor prioritárias:
Conteúdo original '.$index.'
Descrição preservada '.$index.'
'; } $original .= '4. Âmbito de Investimento
Outros sectores serão acrescentados.
'; $service = new CorridorAgribusiness; $html = $service->enrich($original); $doc = new DOMDocument; $doc->loadHTML(''.$html); $xpath = new DOMXPath($doc); $this->assertCount(6, $xpath->query('//ul[starts-with(@id,"agronegocio-oportunidades-")]')); $this->assertCount(34, $xpath->query('//ul[starts-with(@id,"agronegocio-oportunidades-")]/li')); foreach ($data['groups'] as $index => $group) { $list = $doc->getElementById('agronegocio-oportunidades-'.($index + 1)); $this->assertSame(count($group['opportunities']), $list->getElementsByTagName('li')->length); foreach ($group['opportunities'] as $opportunity) { $this->assertStringContainsString($opportunity['description'], $list->textContent); } $this->assertStringContainsString(chr(97 + $index).') '.$group['name'], $html); $this->assertStringContainsString('Conteúdo original '.$index, $html); $this->assertStringContainsString('Descrição preservada '.$index, $html); } $this->assertStringContainsString('4. Âmbito de Investimento', $html); $this->assertSame($html, $service->enrich($html)); } public function test_broader_corridor_names_and_incomplete_sections_are_left_unchanged(): void { $html = 'Corredor de Nacala e Norte
Cadeias de valor prioritárias: preservadas
' .'Corredor Maputo–Limpopo
Cadeias de valor prioritárias: preservadas
' .'Corredor de Nacala
Sem parágrafo de cadeias prioritárias.
'; $this->assertSame($html, (new CorridorAgribusiness)->enrich($html)); } }