49 lines
2.5 KiB
PHP
49 lines
2.5 KiB
PHP
<?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));
|
||
}
|
||
}
|