# TESTS OPENACCESS

## Fonctionnement des tests

### Répertoires

Le fichier Access `.\initial\projet0.zip` contient l'application de test.  

Les tests ont lieu dans le répertoire `.\work`

Les résultats sont contrôlés au moyen du contenu du répertoire `.\reference`

### Le projet de départ

L'application `project0.accdb` sert de support de test.

Le fichier `db.accdb` contient les éventuelles tables liées. **ATTENTION: la chaine de connexion des tables liées à db.accdb doit pointer vers .\work\db.accdb et non pas .\initial\db.accdb**


### Déroulement

#### Préparation des fichiers

* Le dossier `.\work` est vidé

> `del /f /s /q .\work`

* Le dossier `.\results` est vidé

> `del /f /s /q .\results`

* `.\initial\projet0.zip` est extrait vers `.\work\projet0.accdb`

> `unzip .\initial\project0.zip -d .\work`

* `.\initial\db.zip` est extrait vers `.\work\db.accdb`

> `unzip .\initial\db.zip -d .\work`

* `.\initial\empty_project.zip` est extrait vers `.\work\empty_project.accdb`

> `unzip .\initial\empty_project.zip -d .\work`

#### Création des sources

* La fonction `silent_export` de OpenAccess est executée depuis le fichier `.\work\project0.accdb` (via la macro `test_export` de `project0.accdb`)

> `"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\project0.accdb" /X test_export`

Le répertoire `.\work\source` est créé

* L'existence du fichier `.\work\project0.zip` créé par l'export est contrôlée

> `python assert_exists.py .\work\project0.zip`

* Les fichiers `.\work\source\modules\test_methods.bas`, `.\work\source\macros\test_export.bas` et `.\work\source\macros\test_import.bas` sont supprimés (ils ne font pas partie du périmètre des tests et leur présence provoquera des erreurs à l'import)

> `del .\work\source\modules\test_methods.bas`
> `del .\work\source\macros\test_export.bas`
> `del .\work\source\macros\test_import.bas`

**ATTENTION à s'assurer que ces fichiers ont aussi été supprimés de .\reference\source!**

* Le dossier `.\work\source` est copié vers `.\results\source_1`

> `copy .\works\source .\results\source1`

#### Contrôle des résultats

* La fonction compare.py est utilisée pour comparer le contenu des sous-répertoires et des fichiers sources ainsi créés à ceux contenus dans le répertoire `.\reference\source`

> `python compare.py .\work\source .\reference\source`

#### Import des sources dans une base vide

* La fonction `silent_import` de OpenAccess est executée depuis le fichier `.\work\empty_project.accdb` (via la macro `test_import` de `empty_project.accdb`)

> `"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\empty_project.accdb" /X test_import`

* `.\work\empty_project.accdb` est copié vers `.\results\result1.accdb`

> `copy .\work\empty_project.accdb .\results\result1.accdb`

* L'existence du fichier `.\work\empty_project.accdb.old` créé par l'export est contrôlée

> `python assert_exists.py .\work\empty_project.accdb.old`

#### Import des sources dans un projet existant

* La fonction `silent_import` de OpenAccess est executée depuis le fichier `.\work\project0.accdb` (via la macro `test_import` de `project0.accdb`)

> `"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\project0.accdb" /X test_import`

* `.\work\project0.accdb` est copié vers `.\results\result2.accdb`

> `copy .\work\project0.accdb .\results\result2.accdb`

* L'existence du fichier `.\work\project0.accdb.old` créé par l'export est contrôlée

> `python assert_exists.py .\work\project0.accdb.old`

#### Contrôle des résultats
*à revoir*

> vider .\work, et exporter successivement les sources de result1 et result2 pour comparer le résultat à reference\source?


## Interpréter les résultats

La build sera réussie si:

* Elle se déroule jusqu'au bout sans erreur
* La fonction `compare.py` retourne un code exit 0 à chaque fois qu'elle est appellée


De plus, on peut vérifier les résultats dans le répertoire .\results:

* initial.accdb contient le projet de départ
* source1 contient le résultat de l'export des sources de project0.accdb
* result1.accdb contient le résultat d'u import de ces sources dans une base vide
* result2.accdb contient le résultat de l'improt des sources dans project0.accdb

## Commande batch

	@echo off

	echo clean the directories
	del /f /s /q .\work
	del /f /s /q .\results
	
	echo prepare files
	unzip .\initial\project0.zip -d .\work
	unzip .\initial\db.zip -d .\work
	unzip .\initial\empty_project.zip -d .\work
	
	echo ** tests: step 1 **

	echo run the test_export macro
	"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\project0.accdb" /X test_export
	
	echo control existence of zipped app
	python assert_exists.py .\work\project0.zip

	echo clean sources
	del .\work\source\modules\test_methods.bas
	del .\work\source\macros\test_export.bas
	del .\work\source\macros\test_import.bas

	echo copy source to results
	copy .\works\source .\results\source1

	echo control the result
	python compare.py .\results\source1 .\reference\source

	echo ** tests: step 2 **

	echo run import in empty_project.accdb
	"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\empty_project.accdb" /X test_import

	echo copy to results
	copy .\work\empty_project.accdb .\results\result1.accdb

	echo control existence of backup
	python assert_exists.py .\work\empty_project.accdb.old

	echo run import in project0.accdb
	"C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\APPLIS_PARC\OpenAccess\tests\work\project0.accdb" /X test_import

	echo copy to results
	copy .\work\project0.accdb .\results\result2.accdb

	echo control existence of backup
	python assert_exists.py .\work\project0.accdb.old

	echo ** end **

	pause


