/** * @file * @brief test \Document */ require DIRTEST.'/global.php'; class DocumentTest extends TestCase { /** * Document */ private $document; public static function setUpBeforeClass():void { // insert a document_modele $cn=Dossier::connect(); $cn->start(); $md_id=$cn->get_next_seq('document_modele_md_id_seq'); $sql="insert into document_modele(md_id,md_name,md_filename,md_mimetype,md_type,md_affect) values ($1,$2,$3,$4,$5,$6)"; $cn->exec_sql($sql, array($md_id, "Balise", "all-tags.odt", "application/vnd.oasis.opendocument.text", "4", "GES")); $oid=$cn->lo_import(__DIR__."/data/all_tags.odt"); $cn->exec_sql("update document_modele set md_lob = $1 where md_id=$2", [$oid, $md_id]); $cn->exec_sql("update parameter set pr_value='Dossier Test' where pr_id=$1", ['MY_NAME']); $cn->exec_sql("update parameter set pr_value='BE00112233' where pr_id=$1", ['MY_TVA']); $cn->exec_sql("update parameter set pr_value='My street' where pr_id=$1", ['MY_STREET']); $cn->commit(); } public static function tearDownAfterClass():void { // clean database $cn=Dossier::connect(); $cn->start(); $md_id=$cn->get_value("select max(md_id) from document_modele where md_name='Balise'"); $oid=$cn->get_value("select md_lob from document_modele where md_id=$1", [$md_id]); if ($oid!="") { $cn->lo_unlink($oid); } $cn->exec_sql("delete from document_modele where md_id=$1", [$md_id]); $cn->exec_sql("delete from document where ag_id=1"); $cn->commit(); } /** * Sets up the fixture, for example, opens a network connection. * This method is called before a test is executed. */ protected function setUp():void { } /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. */ protected function tearDown():void { } function testBlank() { $cn=Dossier::connect(); $document=new Document($cn); $document->ag_id=1; $document->md_type=4; $document->blank(); $this->assertTrue($document->d_id>-1,"Document inserted") ; $this->assertTrue(isset($document->d_number) &&($document->d_number>0),"Document inserted") ; } function testCompute_filename() { $cn=Dossier::connect(); $document=new Document($cn); $filename="Ncompute_filename("ACH'->42", $filename); $this->assertEquals("n-ew-file-name-21-01-01-ach-42.odt",$new_filename,"Sanitize filename"); } function testReplace() { $cn=Dossier::connect(); global $g_parameter; $g_parameter=new Noalyss_Parameter_Folder($cn); $document=new Document($cn); $array=[]; $array['e_client']='CLIENT'; $this->assertTrue ( $document->replace('MY_NAME',array()) == 'Dossier Test','MY_NAME'); $this->assertTrue ( $document->replace('MY_TVA',array()) == 'BE00112233','MY_TVA'); $this->assertTrue ( $document->replace('MY_STREET',array()) == 'My street','MY_STREET'); $this->assertTrue ( $document->replace('CUST_NAME',$array) == 'Client 1','CUST_NAME'); } /** * @testdox Generate Document::generate(), Document::parseDocument(),Document::replace(); require unoconv -l in another session * @covers Document::generate(), Document::parseDocument(),Document::replace(); */ function testGenerate() { require_once 'global.php'; $cn=Dossier::connect(); $md_id=$cn->get_value('select max(md_id) md_id from document_modele where md_name=$1',['Balise']); $array['e_client']='CLIENT'; $array['e_date']='21.03.2020'; $document=new Document($cn,$md_id); $document->ag_id=2; $document->md_id=$md_id; $cnt_before=$cn->get_value("select count(*) from document"); $document->generate($array); $this->assertEquals($document->d_filename ,'all-tags.odt','Generated File '); $cnt_after=$cn->get_value("select count(*) from document"); $this->assertTrue ($cnt_after == $cnt_before+1,"One file generated"); } /** * @testdox test $_ENV['TMP'] */ function testGenerateTmp() { $cn=Dossier::connect(); $md_id=$cn->get_value('select max(md_id) md_id from document_modele where md_name=$1',['Balise']); $array['e_client']='CLIENT'; $array['e_date']='21.03.2020'; $document=new Document($cn,$md_id); $document->ag_id=2; $document->md_id=$md_id; $cnt_before=$cn->get_value("select count(*) from document"); $tEnv=$_ENV['TMP']; $_ENV['TMP']='/not.exist'; $this->assertStringContainsString ('échoué',$document->generate($array)); $_ENV['TMP']= $tEnv; } /** * @testdox ExtractPdf export PDF tests Document::export_pdf, Document::transform2pdf() * */ function testExtractPdf() { require "global.php"; $cn=Dossier::connect(); $d_id=$cn->get_value('select max(d_id) d_id from document'); $document=new Document($cn); $document->d_id=$d_id; $document->get(); $this->assertEquals($document->d_filename,'all-tags.odt','get document row'); $file=$document->transform2pdf(); echo "Please check $file "; $this->assertTrue (file_exists($file),"File exist"); } }