/[openfoncier]/branches/3.14.x/tests/testDigitalizedDocument.php
ViewVC logotype

Contents of /branches/3.14.x/tests/testDigitalizedDocument.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3697 - (show annotations)
Thu Nov 12 17:02:11 2015 UTC (9 years, 2 months ago) by nhaye
File size: 16939 byte(s)
Correction suite à la modification du fichier de test

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26