/[openfoncier]/trunk/tests/testDigitalizedDocument.php
ViewVC logotype

Annotation of /trunk/tests/testDigitalizedDocument.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3730 - (hide annotations)
Fri Mar 18 11:50:26 2016 UTC (8 years, 10 months ago) by mbroquet
File size: 16954 byte(s)
Actualisation du trunk
1 mbroquet 3730 <?php
2     /**
3     * Ce fichier regroupe les tests unitaire sur la classe DigitalizedDocument
4     *
5     * @package openads
6     * @version SVN : $Id: testDigitalizedDocument.php 6129 2016-03-08 15:51:07Z stimezouaght $
7     */
8    
9     require_once('../obj/digitalizedDocument.class.php');
10     //
11     require_once "../obj/utils.class.php";
12    
13     /**
14     * Cette classe permet de faire des tests unitaires sur la classe DigitalizedDocument
15     *
16     * La constante DEBUG doit être définis sur DEGUG_MODE ou PRODUCTION_MODE
17     *
18     * Lors de l'envoi de la commande ajouter --bootstrap bootstrap.php
19     *
20     * Jeu de données utilisé :
21     * Le dossier d'instruction PC0130551200001P0 présent dans la bdd,
22     * les dossiers et document présent dans binary_files/test_digitalizedDocument
23     */
24     class DigitalizedDocumentTest extends PHPUnit_Framework_TestCase {
25    
26     var $digitalizedDocument = NULL;
27    
28     /**
29     * Fonction lancée en début de classe
30     */
31     public static function setUpBeforeClass() {
32     // Création des dossiers PC0130551200001.P0 et PC0130551200002 dans le
33     // dossier de numérisation
34     mkdir('../var/digitalization/Todo/PC0130551200001.P0/');
35     chmod('../var/digitalization/Todo/PC0130551200001.P0/', 0777);
36     mkdir('../var/digitalization/Todo/PC0130551200002.P0/');
37     chmod('../var/digitalization/Todo/PC0130551200002.P0/', 0777);
38     // Récupération du document
39     copy('binary_files/20091106AUTPCP.pdf', '../var/digitalization/Todo/PC0130551200001.P0/20091106AUTPCP.pdf');
40     copy('binary_files/20091106AUTPCP-1.pdf', '../var/digitalization/Todo/PC0130551200001.P0/20091106AUTPCP-1.pdf');
41    
42     }
43    
44     /**
45     * Fonction lancée en fin de classe
46     */
47     public static function tearDownAfterClass() {
48     // Suppression du document 20091106AUTPCP.pdf
49     unlink('../var/digitalization/Todo/PC0130551200001.P0/20091106AUTPCP.pdf');
50     unlink('../var/digitalization/Todo/PC0130551200001.P0/20091106AUTPCP-1.pdf');
51     // Suppression des dossiers PC0130551200001.P0 et PC0130551200002.P0
52     if(file_exists('../var/digitalization/Todo/PC0130551200001.P0')) {
53     rmdir('../var/digitalization/Todo/PC0130551200001.P0');
54     }
55     if(file_exists('../var/digitalization/Todo/PC0130551200002.P0')) {
56     rmdir('../var/digitalization/Todo/PC0130551200002.P0');
57     }
58     }
59    
60     /**
61     * Fonction lancée en debut de chaque test
62     */
63     public function setUp() {
64     // Instancie la timezone
65     date_default_timezone_set('Europe/Paris');
66     echo ' = '.get_class().'.'.str_replace('test_', '', $this->getName())."\r\n";
67     @session_start();
68     $_SESSION['collectivite'] = 1;
69     $_SESSION['login'] = "admin";
70     $_SERVER['REQUEST_URI'] = "";
71     $f = new utils("nohtml");
72     $f->disableLog();
73     $this->digitalizedDocument = new DigitalizedDocument($f);
74     }
75    
76     public function onNotSuccessfulTest(Exception $e){
77     echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n";
78     parent::onNotSuccessfulTest($e);
79     }
80    
81     /**
82     * Fonction lancée en fin de chaque test
83     */
84     public function tearDown() {
85     //On détruit l'instance de la classe DigitalizedDocument
86     $this->digitalizedDocument->__destruct();
87     }
88    
89     /**
90     * Fonction permettant de verifier l'ajout dans la base de données
91     */
92     private function checkLinkFile($uid) {
93    
94     //Requête qui vérifie dans la bdd si le lien existe
95     $sql = "SELECT document_numerise
96     FROM ".DB_PREFIXE."document_numerise
97     WHERE uid = '".$uid."'";
98     $document_numerise = $this->digitalizedDocument->f->db->getOne($sql);
99     $this->digitalizedDocument->f->addToLog("tests/testDigitalizedDocument.php : db->getOne(".$sql.")", VERBOSE_MODE);
100     $this->digitalizedDocument->f->isDatabaseError($document_numerise);
101    
102     //Si le lien a été trouvé on retourne vrai
103     if ($document_numerise) {
104    
105     return true;
106    
107     }
108    
109     //sinon on retourne false
110     return false;
111     }
112    
113     /**
114     * Recupère uid par rapport à l'identifiant
115     */
116     private function get_uid_by_id($document_numerise) {
117    
118     //Requête qui vérifie dans la bdd si le lien existe
119     $sql = "SELECT uid
120     FROM ".DB_PREFIXE."document_numerise
121     WHERE document_numerise = '".$document_numerise."'";
122     $uid = $this->digitalizedDocument->f->db->getOne($sql);
123     $this->digitalizedDocument->f->addToLog("tests/testDigitalizedDocument.php : db->getOne(".$sql.")", VERBOSE_MODE);
124     $this->digitalizedDocument->f->isDatabaseError($uid);
125    
126     //
127     return $uid;
128    
129     }
130    
131     /**
132     * Test la fonction listFiles
133     */
134     public function testListFiles() {
135    
136     //Nom possible de dossier
137     $path = "../var/digitalization/Todo/PC0130551200001.P0";
138     //Retour de la fonction listFiles
139     $listFiles = $this->digitalizedDocument->listFiles($path);
140     //On vérifie les documents retourné
141     $this->assertContains("20091106AUTPCP-1.pdf", $listFiles);
142     $this->assertContains("20091106AUTPCP.pdf", $listFiles);
143    
144     //Nom de dossier vide
145     $path = "../var/digitalization/Todo/PC0130551200002.P0";
146     //Retour de la fontion listFiles
147     $listFiles = $this->digitalizedDocument->listFiles($path);
148     //On vérifie que le tableau retourné est vide
149     $this->assertEquals($listFiles, null);
150     }
151    
152     /*
153     * Test la fonction extractMetadataFromFilename
154     */
155     public function testExtractMetadataFromFilename() {
156    
157     //Nom possible de document
158     $filename = "20091106AUTPCP.pdf";
159     //Retour de la fonction extractMetadataFromFilename
160     $extractMetadataFromFilename = $this->digitalizedDocument->extractMetadataFromFilename($filename);
161     //On vérifie les données retournées
162     $this->assertEquals($extractMetadataFromFilename["title"], "AUTPCP");
163     $this->assertEquals($extractMetadataFromFilename["dateEvenementDocument"], "06/11/2009");
164    
165     //Nom possible de document avec version
166     $filename = "20130420ART-1.pdf";
167     //Retour de la fonction extractMetadataFromFilename
168     $extractMetadataFromFilename = $this->digitalizedDocument->extractMetadataFromFilename($filename);
169     //On vérifie les données retournées
170     $this->assertEquals($extractMetadataFromFilename["title"], "ART");
171     $this->assertEquals($extractMetadataFromFilename["dateEvenementDocument"], "20/04/2013");
172    
173     //Nom erroné de document
174     $filename = "20591212.pdf";
175     //Retour de la fonction extractMetadataFromFilename
176     $extractMetadataFromFilename = $this->digitalizedDocument->extractMetadataFromFilename($filename);
177     //On vérifie que le tableau retourné est vide
178     $this->assertEquals($extractMetadataFromFilename, null);
179    
180     }
181    
182     /**
183     * Test la fonction extractMetadataToFilestorage
184     */
185     public function testExtractMetadataToFilestorage() {
186    
187     //Nom possible de dossier
188     $path = "../var/digitalization/Todo/PC0130551200001.P0";
189     //Nom possible de document
190     $filename = "20091106AUTPCP.pdf";
191     //Retour de la fonction extractMetadataToFilestorage
192     $extractMetadataToFilestorage = $this->digitalizedDocument->extractMetadataToFilestorage($path, $filename);
193     //On vérifie les données retournées
194     $this->assertEquals($extractMetadataToFilestorage['filename'], '20091106AUTPCP.pdf');
195     $this->assertEquals($extractMetadataToFilestorage['size'], '17435');
196     $this->assertEquals($extractMetadataToFilestorage['mimetype'], 'application/pdf');
197    
198     //Chemin document erroné
199     $path = "";
200     //Nom possible de document
201     $filename = "20091106AUTPCP.pdf";
202     //Retour de la fonction extractMetadataToFilestorage
203     $extractMetadataToFilestorage = $this->digitalizedDocument->extractMetadataToFilestorage($path, $filename);
204     //On vérifie que le retour est null
205     $this->assertEquals($extractMetadataToFilestorage, null);
206    
207     }
208    
209     /**
210     * Test la fonction createFileTemporary
211     */
212     public function testCreateFileTemporary() {
213    
214     //Nom possible d'un répertoire
215     $foldername = "PC0130551200001.P0";
216     //Nom possible de dossier
217     $path = "../var/digitalization/Todo/PC0130551200001.P0";
218     //Nom possible de document
219     $filename = "20091106AUTPCP.pdf";
220     //Construit les métadonnées
221     $metadata = array();
222     //Données récupérées pour le filestorage
223     $metadata = $this->digitalizedDocument->extractMetadataToFilestorage($path, $filename);
224     //Recupère le contenu du fichier
225     $file_content = file_get_contents($path.'/'.$filename);
226    
227     //Retour de la fonction createFile
228     $createFile = $this->digitalizedDocument->createFileTemporary($file_content, $metadata);
229     //On vérifie que l'action s'est bien déroulée
230     $file_exists_filestorage = $this->digitalizedDocument->filestorage->get_temporary($createFile);
231     $this->assertTrue($file_exists_filestorage != null);
232    
233     }
234    
235     /**
236     * Test la fonction createDocumentNumerise
237     */
238     public function testCreateDocumentNumerise() {
239    
240     //Nom possible d'un répertoire
241     $foldername = "PC0130551200001.P0";
242     //Identifiant du dossier
243     $dossier = "PC0130551200001P0";
244     //Nom possible de dossier
245     $path = "../var/digitalization/Todo/PC0130551200001.P0";
246     //Nom du document
247     $filename = "20091106AUTPCP.pdf";
248     //Création du fichier
249     $newfile = "20091106RIPC05.pdf";
250     copy($path.'/'.$filename, $path.'/'.$newfile);
251    
252     //Instance document_numerise
253     require_once "../obj/document_numerise.class.php";
254     $document_numerise = new document_numerise("]", $this->digitalizedDocument->f->db, NULL);
255    
256     //Construit les métadonnées
257     $metadata = array();
258     //Données récupérées pour le filestorage
259     $metadata = $this->digitalizedDocument->extractMetadataToFilestorage($path, $newfile);
260    
261     //Recupère le contenu du fichier
262     $file_content = file_get_contents($path.'/'.$newfile);
263    
264     //Créer le fichier temporaire
265     $uid = $this->digitalizedDocument->createFileTemporary($file_content, $metadata);
266    
267     //Retour de la fonction createFileStorage
268     $createDocumentNumerise = $this->digitalizedDocument->createDocumentNumerise($document_numerise, $uid, $dossier, $newfile, $this->digitalizedDocument->f->db, NULL);
269    
270     //Supprime le fichier laissé dans le dossier Todo
271     unlink($path.'/'.$newfile);
272    
273     //On vérifie que le fichier a bien été créé dans le filestorage
274     $uid = $this->get_uid_by_id($createDocumentNumerise);
275     $file_exists_filestorage = $this->digitalizedDocument->filestorage->get($uid);
276     $this->assertTrue($file_exists_filestorage != null);
277    
278     //Uid pas présent dans la bdd
279     $uid = uniqid();
280     //On vérifie que false est bien retourné
281     $this->assertEquals($this->checkLinkFile($uid), false);
282    
283     }
284    
285     /**
286     * Test la fonction moveDocumentNumerise
287     */
288     public function testMoveDocumentNumerise() {
289    
290     //Dossier source
291     $pathSrc = "../var/digitalization/Todo/PC0130551200001.P0";
292     //Dossier de destination
293     $pathDes = "../var/digitalization/Done/PC0130551200001.P0";
294     //Nom du fichier
295     $filename = "20091106AUTPCP.pdf";
296     //Retour de la fonction moveDocumentNumerise
297     $moveFile = $this->digitalizedDocument->moveDocumentNumerise($pathSrc, $pathDes, $filename);
298     //On vérifie que l'action s'est bien déroulée
299     //Le document doit être présent dans la destination
300     $file_exists_destination = file_exists($pathDes.'/'.$filename);
301     $this->assertEquals($file_exists_destination, true);
302     //Le document ne doit plus être présent dans la source
303     $file_exists_source = file_exists($pathSrc.'/'.$filename);
304     $this->assertEquals($file_exists_source, false);
305    
306     //Remet le fichier dans todo pour les autres tests
307     rename($pathDes.'/'.$filename, $pathSrc.'/'.$filename);
308    
309     }
310    
311     /**
312     * Test la fonction purgeFiles
313     */
314     public function testPurgeFiles() {
315    
316     //Dossier source
317     $pathSrc = "../var/digitalization/Todo/PC0130551200001.P0";
318     //Dossier de destination
319     $pathDes = "../var/digitalization/Done/PC0130551200001.P0";
320     //Création dossier
321     if (!file_exists($pathDes)) {
322     mkdir("../var/digitalization/Done/PC0130551200001.P0");
323     }
324     //Nom du fichier
325     $filename = "20091106AUTPCP.pdf";
326     //Met le fichier dans Done
327     copy($pathSrc.'/'.$filename, $pathDes.'/'.$filename);
328    
329     //fichier
330     $file = $pathDes.'/'.$filename;
331     //Date de l'import du document
332     $dateImport = "2012-01-01";
333     //Nombre jour
334     $nbDay = 60;
335     //Retour de la fonction purge
336     $purgeFiles = $this->digitalizedDocument->purgeFiles($file, $dateImport, $nbDay);
337     //On vérifie que l'action s'est bien déroulée
338     $this->assertEquals($purgeFiles, true);
339    
340     //Création du fichier
341     $newfile = "20091106RIPC05.pdf";
342     copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
343     //fichier
344     $file = $pathDes.'/'.$newfile;
345     //Retour de la fonction purge sans les paramètres de date
346     $purgeFiles = $this->digitalizedDocument->purgeFiles($file);
347     //On vérifie que l'action s'est bien déroulée
348     $this->assertEquals($purgeFiles, true);
349    
350     //Création du fichier
351     $newfile = "20091106DGPC03.pdf";
352     copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
353     //fichier
354     $file = $pathDes.'/'.$newfile;
355     //Date de l'import du document
356     $dateImport = date('d-m-Y');
357     //Nombre jour
358     $nbDay = 60;
359     //Retour de la fonction purge
360     $purgeFiles = $this->digitalizedDocument->purgeFiles($file, $dateImport, $nbDay);
361     //On vérifie que l'action s'est bien déroulée
362     $this->assertEquals($purgeFiles, false);
363    
364     //Supprime le fichier laissé dans le dossier Done
365     unlink($pathDes.'/'.$newfile);
366    
367     }
368    
369     /**
370     * Test la fonction run_import
371     */
372     public function test_run_import() {
373    
374     //Nom de dossier
375     $pathSrc = "../var/digitalization/Todo/PC0130551200001.P0";
376     //Nom dossier destination
377     $pathDes = "../var/digitalization/Done/PC0130551200001.P0";
378     //Renomme le fichier pdf
379     $path = "../var/digitalization/Todo/PC0130551200001.P0";
380     $listFiles = $this->digitalizedDocument->listFiles($pathSrc);
381     //On vérifie les documents retourné
382     rename($pathSrc.'/'."20091106AUTPCP.pdf", $pathSrc.'/'."20091106NDL.pdf");
383     rename($pathSrc.'/'."20091106AUTPCP-1.pdf", $pathSrc.'/'."20091106NDL-1.pdf");
384    
385     //Déclarations paramètre
386     $db = $this->digitalizedDocument->f->db;
387     $DEBUG = NULL;
388     //Retour de la fonction run_import
389     $run_import = $this->digitalizedDocument->run_import($pathSrc, $pathDes, $db, $DEBUG);
390     //On vérifie que l'action s'est bien déroulée
391     $this->assertEquals($run_import, true);
392     $this->assertEquals(count($this->digitalizedDocument->filenameError), 0);
393    
394     //Replace les fichiers dans le fichier source
395     copy($pathDes.'/'."20091106NDL.pdf", $pathSrc.'/'."20091106AUTPCP.pdf");
396     copy($pathDes.'/'."20091106NDL-1.pdf", $pathSrc.'/'."20091106AUTPCP-1.pdf");
397     }
398    
399     /**
400     * Test la fonction run_purge
401     */
402     public function test_run_purge() {
403    
404     //Dossier source
405     $pathSrc = "../var/digitalization/Todo/PC0130551200001.P0";
406     //Dossier de destination
407     $pathDes = "../var/digitalization/Done/PC0130551200001.P0";
408     //Création dossier
409     if (!file_exists($pathDes)) {
410     mkdir("../var/digitalization/Done/PC0130551200001.P0");
411     }
412     //Nom du fichier
413     $filename = "20091106AUTPCP.pdf";
414     //Met le fichier 20091106AUTPCP dans Done
415     copy($pathSrc.'/'.$filename, $pathDes.'/'.$filename);
416     //Création du fichier 20091106RIPC05
417     $newfile = "20091106RIPC05.pdf";
418     copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
419     //Création du fichier 20091106DGPC03
420     $newfile = "20091106DGPC03.pdf";
421     copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
422    
423     //Retour de la fonction run_purge sans date
424     $run_purge = $this->digitalizedDocument->run_purge($pathDes);
425     //On vérifie que l'action s'est bien déroulée
426     $this->assertEquals($run_purge, true);
427    
428     }
429    
430     }
431    
432     ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26