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

Contents of /trunk/tests/testDigitalizedDocument.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1973 - (show annotations)
Fri May 31 11:09:40 2013 UTC (11 years, 8 months ago) by softime
File size: 15215 byte(s)
Modification du nom de dossier de Transfert GED en Transfert_GED

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26