100 lines
3.0 KiB
PHP
100 lines
3.0 KiB
PHP
<?php
|
|
namespace Tests\Unit;
|
|
|
|
use App\Handlers\UlbXmlImportHandler;
|
|
use Tests\TestCase;
|
|
|
|
/**
|
|
* UlbXmlImportHandlerTest.php
|
|
*
|
|
* @author: Leonard Smith <leonard@acornwebconsultants.com>
|
|
* Date: 5/6/21
|
|
* Time: 6:52 AM
|
|
*/
|
|
class UlbXmlImportHandlerTest extends TestCase
|
|
{
|
|
public function testStripUsfmMarkupRemovesUsfmNode()
|
|
{
|
|
$xml = <<<'END'
|
|
<xml>
|
|
<book>
|
|
<chapter >
|
|
<verse>
|
|
<ULB>Some test with markup <usfm>\f the markup \f*</usfm></ULB>
|
|
</verse>
|
|
</chapter>
|
|
</book>
|
|
</xml>
|
|
END;
|
|
|
|
/** @var \DOMDocument $doc */
|
|
$doc = new \DOMDocument;
|
|
$doc->loadXML($xml);
|
|
|
|
$element = $doc->getElementsByTagName('ULB');
|
|
|
|
$handler = new UlbXmlImportHandler;
|
|
|
|
$reflection_class = new \ReflectionClass(UlbXmlImportHandler::class);
|
|
$method = $reflection_class->getMethod('stripUsfmMarkupFromUlb');
|
|
$method->setAccessible(true);
|
|
|
|
$result = $method->invoke($handler, $element[0]);
|
|
$this->assertInstanceOf(\DOMElement::class, $result);
|
|
$this->assertStringNotContainsString('\f the markup \f*', $result->nodeValue);
|
|
$this->assertStringContainsString('Some test with markup', $result->nodeValue);
|
|
}
|
|
|
|
public function testStripUsfmMarkupWorksWhenNoUsfmNode()
|
|
{
|
|
$xml = <<<'END'
|
|
<xml>
|
|
<book>
|
|
<chapter >
|
|
<verse>
|
|
<ULB>Some test without markup</ULB>
|
|
</verse>
|
|
</chapter>
|
|
</book>
|
|
</xml>
|
|
END;
|
|
|
|
/** @var \DOMDocument $doc */
|
|
$doc = new \DOMDocument;
|
|
$doc->loadXML($xml);
|
|
|
|
$element = $doc->getElementsByTagName('ULB');
|
|
|
|
$handler = new UlbXmlImportHandler;
|
|
|
|
$reflection_class = new \ReflectionClass(UlbXmlImportHandler::class);
|
|
$method = $reflection_class->getMethod('stripUsfmMarkupFromUlb');
|
|
$method->setAccessible(true);
|
|
|
|
$result = $method->invoke($handler, $element[0]);
|
|
$this->assertInstanceOf(\DOMElement::class, $result);
|
|
$this->assertStringContainsString('Some test without markup', $result->nodeValue);
|
|
}
|
|
|
|
public function testThatStrongsNumbersGetFormattedCorrectly()
|
|
{
|
|
$numbersToTest = [
|
|
[ 'actual' => '1', 'expected' => 'G0001' ],
|
|
[ 'actual' => '11', 'expected' => 'G0011' ],
|
|
[ 'actual' => '111', 'expected' => 'G0111' ],
|
|
[ 'actual' => '1111', 'expected' => 'G1111' ],
|
|
];
|
|
|
|
$handler = new UlbXmlImportHandler;
|
|
|
|
$reflection_class = new \ReflectionClass(UlbXmlImportHandler::class);
|
|
$method = $reflection_class->getMethod('formatStrongsNumber');
|
|
$method->setAccessible(true);
|
|
|
|
foreach ($numbersToTest as $set) {
|
|
$result = $method->invoke($handler, $set['actual']);
|
|
$this->assertEquals($set['expected'], $result);
|
|
}
|
|
}
|
|
}
|