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

Contents of /trunk/tests/testDigitalizedDocument.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3408 - (show annotations)
Mon Apr 13 15:41:13 2015 UTC (9 years, 9 months ago) by nhaye
File size: 16767 byte(s)
Correction de tests

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26