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

Contents of /trunk/tests/testDigitalizedDocument.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2577 - (show annotations)
Wed Dec 4 14:38:22 2013 UTC (11 years, 2 months ago) by softime
File size: 16107 byte(s)
Modification de la gestion des fichiers pour les tests testREST, testPieces et testDigitalizedDocument

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26