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

Annotation of /trunk/tests/testDigitalizedDocument.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3284 - (hide annotations)
Mon Feb 9 17:25:07 2015 UTC (9 years, 11 months ago) by vpihour
File size: 16829 byte(s)
Lors de l'import des documents numérisés, les fichiers contenant des "-" dans leurs noms avaient ces derniers qui étaient tronqués. C'est corrigés.

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26