$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)); } }