Files
Investidor-V2/tests/Unit/CorridorAgribusinessTest.php
T
2026-10-23 09:56:22 +02:00

49 lines
2.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Tests\Unit;
use App\Services\CorridorAgribusiness;
use DOMDocument;
use DOMXPath;
use PHPUnit\Framework\TestCase;
class CorridorAgribusinessTest extends TestCase
{
public function test_each_named_corridor_keeps_its_own_opportunities_and_original_content(): void
{
$data = json_decode(file_get_contents(__DIR__.'/../../database/data/corridor-investment-opportunities.json'), true, 512, JSON_THROW_ON_ERROR);
$original = '';
foreach ($data['groups'] as $index => $group) {
$original .= '<p><strong>'.chr(97 + $index).') '.$group['name'].'</strong></p><p>Cadeias de valor prioritárias:<br>Conteúdo original '.$index.'</p><p>Descrição preservada '.$index.'</p>';
}
$original .= '<p><strong>4. Âmbito de Investimento</strong></p><p>Outros sectores serão acrescentados.</p>';
$service = new CorridorAgribusiness;
$html = $service->enrich($original);
$doc = new DOMDocument;
$doc->loadHTML('<?xml encoding="UTF-8">'.$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 = '<p>Corredor de Nacala e Norte</p><p>Cadeias de valor prioritárias: preservadas</p>'
.'<p>Corredor Maputo–Limpopo</p><p>Cadeias de valor prioritárias: preservadas</p>'
.'<p>Corredor de Nacala</p><p>Sem parágrafo de cadeias prioritárias.</p>';
$this->assertSame($html, (new CorridorAgribusiness)->enrich($html));
}
}