/[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 3521 - (show annotations)
Tue Jun 30 13:44:54 2015 UTC (9 years, 7 months ago) by kburles
File size: 16827 byte(s)
Modification du testListFiles pour que la comparaison du document retourné soit faite sur l'ensemble de l'array de $listFiles et non plus sur un champ spécifique de l'array 

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 rmdir('../trs/numerisation/Done/PC0130551200001.P0');
55 }
56
57 /**
58 * Fonction lancée en debut de chaque test
59 */
60 public function setUp() {
61 // Instancie la timezone
62 date_default_timezone_set('Europe/Paris');
63 // 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 //On instancie la classe DigitalizedDocument
72 $_SERVER['REQUEST_URI'] = "";
73 $this->digitalizedDocument = new DigitalizedDocument($f);
74 }
75
76 /**
77 * Fonction lancée en fin de chaque test
78 */
79 public function tearDown() {
80 //On détruit l'instance de la classe DigitalizedDocument
81 $this->digitalizedDocument->__destruct();
82 }
83
84 /**
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 $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
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 /**
109 * Recupère uid par rapport à l'identifiant
110 */
111 private function get_uid_by_id($document_numerise) {
112
113 //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 }
125
126 /**
127 * Test la fonction listFiles
128 */
129 public function testListFiles() {
130
131 //Nom possible de dossier
132 $path = "../trs/numerisation/Todo/PC0130551200001.P0";
133 //Retour de la fonction listFiles
134 $listFiles = $this->digitalizedDocument->listFiles($path);
135 //On vérifie les documents retourné
136 $this->assertContains("20091106AUTPCP-1.pdf", $listFiles);
137 $this->assertContains("20091106AUTPCP.pdf", $listFiles);
138
139 //Nom de dossier vide
140 $path = "../trs/numerisation/Todo/PC0130551200002.P0";
141 //Retour de la fontion listFiles
142 $listFiles = $this->digitalizedDocument->listFiles($path);
143 //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
152 //Nom possible de document
153 $filename = "20091106AUTPCP.pdf";
154 //Retour de la fonction extractMetadataFromFilename
155 $extractMetadataFromFilename = $this->digitalizedDocument->extractMetadataFromFilename($filename);
156 //On vérifie les données retournées
157 $this->assertEquals($extractMetadataFromFilename["title"], "AUTPCP");
158 $this->assertEquals($extractMetadataFromFilename["dateEvenementDocument"], "06/11/2009");
159
160 //Nom possible de document avec version
161 $filename = "20130420ART-1.pdf";
162 //Retour de la fonction extractMetadataFromFilename
163 $extractMetadataFromFilename = $this->digitalizedDocument->extractMetadataFromFilename($filename);
164 //On vérifie les données retournées
165 $this->assertEquals($extractMetadataFromFilename["title"], "ART");
166 $this->assertEquals($extractMetadataFromFilename["dateEvenementDocument"], "20/04/2013");
167
168 //Nom erroné de document
169 $filename = "20591212.pdf";
170 //Retour de la fonction extractMetadataFromFilename
171 $extractMetadataFromFilename = $this->digitalizedDocument->extractMetadataFromFilename($filename);
172 //On vérifie que le tableau retourné est vide
173 $this->assertEquals($extractMetadataFromFilename, null);
174
175 }
176
177 /**
178 * Test la fonction extractMetadataToFilestorage
179 */
180 public function testExtractMetadataToFilestorage() {
181
182 //Nom possible de dossier
183 $path = "../trs/numerisation/Todo/PC0130551200001.P0";
184 //Nom possible de document
185 $filename = "20091106AUTPCP.pdf";
186 //Retour de la fonction extractMetadataToFilestorage
187 $extractMetadataToFilestorage = $this->digitalizedDocument->extractMetadataToFilestorage($path, $filename);
188 //On vérifie les données retournées
189 $this->assertEquals($extractMetadataToFilestorage['filename'], '20091106AUTPCP.pdf');
190 $this->assertEquals($extractMetadataToFilestorage['size'], '17435');
191 $this->assertEquals($extractMetadataToFilestorage['mimetype'], 'application/pdf');
192
193 //Chemin document erroné
194 $path = "";
195 //Nom possible de document
196 $filename = "20091106AUTPCP.pdf";
197 //Retour de la fonction extractMetadataToFilestorage
198 $extractMetadataToFilestorage = $this->digitalizedDocument->extractMetadataToFilestorage($path, $filename);
199 //On vérifie que le retour est null
200 $this->assertEquals($extractMetadataToFilestorage, null);
201
202 }
203
204 /**
205 * Test la fonction createFileTemporary
206 */
207 public function testCreateFileTemporary() {
208
209 //Nom possible d'un répertoire
210 $foldername = "PC0130551200001.P0";
211 //Nom possible de dossier
212 $path = "../trs/numerisation/Todo/PC0130551200001.P0";
213 //Nom possible de document
214 $filename = "20091106AUTPCP.pdf";
215 //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 $file_content = file_get_contents($path.'/'.$filename);
221
222 //Retour de la fonction createFile
223 $createFile = $this->digitalizedDocument->createFileTemporary($file_content, $metadata);
224 //On vérifie que l'action s'est bien déroulée
225 $file_exists_filestorage = $this->digitalizedDocument->filestorage->get_temporary($createFile);
226 $this->assertTrue($file_exists_filestorage != null);
227
228 }
229
230 /**
231 * Test la fonction createDocumentNumerise
232 */
233 public function testCreateDocumentNumerise() {
234
235 //Nom possible d'un répertoire
236 $foldername = "PC0130551200001.P0";
237 //Identifiant du dossier
238 $dossier = "PC0130551200001P0";
239 //Nom possible de dossier
240 $path = "../trs/numerisation/Todo/PC0130551200001.P0";
241 //Nom du document
242 $filename = "20091106AUTPCP.pdf";
243 //Création du fichier
244 $newfile = "20091106RIPC05.pdf";
245 copy($path.'/'.$filename, $path.'/'.$newfile);
246
247 //Instance document_numerise
248 require_once "../obj/document_numerise.class.php";
249 $document_numerise = new document_numerise("]", $this->digitalizedDocument->f->db, NULL);
250
251 //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 //Retour de la fonction createFileStorage
263 $createDocumentNumerise = $this->digitalizedDocument->createDocumentNumerise($document_numerise, $uid, $dossier, $newfile, $this->digitalizedDocument->f->db, NULL);
264
265 //Supprime le fichier laissé dans le dossier Todo
266 unlink($path.'/'.$newfile);
267
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
273 //Uid pas présent dans la bdd
274 $uid = uniqid();
275 //On vérifie que false est bien retourné
276 $this->assertEquals($this->checkLinkFile($uid), false);
277
278 }
279
280 /**
281 * Test la fonction moveDocumentNumerise
282 */
283 public function testMoveDocumentNumerise() {
284
285 //Dossier source
286 $pathSrc = "../trs/numerisation/Todo/PC0130551200001.P0";
287 //Dossier de destination
288 $pathDes = "../trs/numerisation/Done/PC0130551200001.P0";
289 //Nom du fichier
290 $filename = "20091106AUTPCP.pdf";
291 //Retour de la fonction moveDocumentNumerise
292 $moveFile = $this->digitalizedDocument->moveDocumentNumerise($pathSrc, $pathDes, $filename);
293 //On vérifie que l'action s'est bien déroulée
294 //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
301 //Remet le fichier dans todo pour les autres tests
302 rename($pathDes.'/'.$filename, $pathSrc.'/'.$filename);
303
304 }
305
306 /**
307 * Test la fonction purgeFiles
308 */
309 public function testPurgeFiles() {
310
311 //Dossier source
312 $pathSrc = "../trs/numerisation/Todo/PC0130551200001.P0";
313 //Dossier de destination
314 $pathDes = "../trs/numerisation/Done/PC0130551200001.P0";
315 //Création dossier
316 if (!file_exists($pathDes)) {
317 mkdir("../trs/numerisation/Done/PC0130551200001.P0");
318 }
319 //Nom du fichier
320 $filename = "20091106AUTPCP.pdf";
321 //Met le fichier dans Done
322 copy($pathSrc.'/'.$filename, $pathDes.'/'.$filename);
323
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 $purgeFiles = $this->digitalizedDocument->purgeFiles($file, $dateImport, $nbDay);
332 //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 copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
338 //fichier
339 $file = $pathDes.'/'.$newfile;
340 //Retour de la fonction purge sans les paramètres de date
341 $purgeFiles = $this->digitalizedDocument->purgeFiles($file);
342 //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 copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
348 //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 $purgeFiles = $this->digitalizedDocument->purgeFiles($file, $dateImport, $nbDay);
356 //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 unlink($pathDes.'/'.$newfile);
361
362 }
363
364 /**
365 * Test la fonction run_import
366 */
367 public function test_run_import() {
368
369 //Nom de dossier
370 $pathSrc = "../trs/numerisation/Todo/PC0130551200001.P0";
371 //Nom dossier destination
372 $pathDes = "../trs/numerisation/Done/PC0130551200001.P0";
373 //Renomme le fichier pdf
374 $path = "../trs/numerisation/Todo/PC0130551200001.P0";
375 $listFiles = $this->digitalizedDocument->listFiles($pathSrc);
376 //On vérifie les documents retourné
377 rename($pathSrc.'/'."20091106AUTPCP.pdf", $pathSrc.'/'."20091106NDL.pdf");
378 rename($pathSrc.'/'."20091106AUTPCP-1.pdf", $pathSrc.'/'."20091106NDL-1.pdf");
379
380 //Déclarations paramètre
381 $db = $this->digitalizedDocument->f->db;
382 $DEBUG = NULL;
383 //Retour de la fonction run_import
384 $run_import = $this->digitalizedDocument->run_import($pathSrc, $pathDes, $db, $DEBUG);
385 //On vérifie que l'action s'est bien déroulée
386 $this->assertEquals($run_import, true);
387 $this->assertEquals(count($this->digitalizedDocument->filenameError), 0);
388
389 //Replace les fichiers dans le fichier source
390 copy($pathDes.'/'."20091106NDL.pdf", $pathSrc.'/'."20091106AUTPCP.pdf");
391 copy($pathDes.'/'."20091106NDL-1.pdf", $pathSrc.'/'."20091106AUTPCP-1.pdf");
392 }
393
394 /**
395 * Test la fonction run_purge
396 */
397 public function test_run_purge() {
398
399 //Dossier source
400 $pathSrc = "../trs/numerisation/Todo/PC0130551200001.P0";
401 //Dossier de destination
402 $pathDes = "../trs/numerisation/Done/PC0130551200001.P0";
403 //Création dossier
404 if (!file_exists($pathDes)) {
405 mkdir("../trs/numerisation/Done/PC0130551200001.P0");
406 }
407 //Nom du fichier
408 $filename = "20091106AUTPCP.pdf";
409 //Met le fichier 20091106AUTPCP dans Done
410 copy($pathSrc.'/'.$filename, $pathDes.'/'.$filename);
411 //Création du fichier 20091106RIPC05
412 $newfile = "20091106RIPC05.pdf";
413 copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
414 //Création du fichier 20091106DGPC03
415 $newfile = "20091106DGPC03.pdf";
416 copy($pathSrc.'/'.$filename, $pathDes.'/'.$newfile);
417
418 //Retour de la fonction run_purge sans date
419 $run_purge = $this->digitalizedDocument->run_purge($pathDes);
420 //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