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

Contents of /trunk/tests/testDigitalizedDocument.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3730 - (show 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 <?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