# Documentation Django 3.1.9.dev

# Test des applications GeoDjango

Dans cette documentation, vous trouverez des notes et des réglages supplémentaires pour les utilisateurs de PostGIS.

## PostGIS

### Réglages

Note

Les réglages ci-dessous ont des valeurs par défaut raisonnables et n’ont généralement pas besoin d’être définis manuellement.

#### `POSTGIS_VERSION`

Lorsque le moteur spatial de GeoDjango s’initialise avec PostGIS, il doit effectuer une requête SQL pour déterminer la version pour savoir quels sont les fonctionnalités disponibles. Les utilisateurs avancés souhaitant éviter cette requête supplémentaire peuvent définir la version de façon manuelle par un tuple à 3 éléments de nombres entiers indiquant les numéros de version majeur, mineur et micro de PostGIS. Par exemple, pour indiquer que la version de PostGIS est X.Y.Z, il faut écrire :

    POSTGIS_VERSION = (X, Y, Z)

### Obtention des privilèges nécessaires

En fonction de votre configuration, cette section décrit plusieurs méthodes pour configurer un utilisateur de base de données disposant de suffisamment de privilèges pour exécuter les tests pour des applications GeoDjango avec PostgreSQL. Si votre modèle de base de données spatiale a été créé en suivant les instructions, il suffit que l’utilisateur de la base de données de test ait les droits de créer des bases de données. Dans d’autres configurations, il se peut qu’il soit nécessaire d’utiliser un superutilisateur de base de données.

#### Création d’un utilisateur de base de données

Pour créer un utilisateur de base de données ayant le droit de créer des bases de données, utilisez la commande suivante :

    $ createuser --createdb -R -S <user_name>

Les drapeaux `-R -S` indiquent respectivement que nous ne voulons pas que l’utilisateur puisse créer d’autres utilisateurs (ou rôles), ni qu’il soit un superutilisateur.

Une autre possibilité est de modifier le rôle d’un utilisateur existant à partir du shell SQL (en supposant que cela se fasse à partir d’un compte superutilisateur) :

    postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

#### Création d’un superutilisateur de base de données

Cela peut se faire au moment de la création de l’utilisateur, par exemple :

    $ createuser --superuser <user_name>

Ou vous pouvez modifier le rôle de l’utilisateur à partir du shell SQL (en supposant que cela se fasse à partir d’un compte superutilisateur existant) :

    postgres# ALTER ROLE <user_name> SUPERUSER;

### Windows

Avec Windows, vous pouvez utiliser l’utilitaire pgAdmin III pour ajouter des privilèges de superutilisateur à un utilisateur de base de données.

Par défaut, l’installeur PostGIS sous Windows inclut un modèle de base de données spatiale nommé `template_postgis`.

## Tests de GeoDjango

Pour que les tests de GeoDjango soient exécutés lors du lancement de la suite de tests de Django avec `runtests.py`, toutes les bases de données définies dans le fichier de réglages doivent utiliser l’un des moteurs de base de données spatiale.

### Exemple

L’exemple suivant montre un fichier de réglages minimal définissant des moteurs spatiaux pouvant être utilisé pour exécuter la suite de tests complète de Django, y compris ceux situés dans `django.contrib.gis`:

    DATABASES = {
        'default': {
            'ENGINE': 'django.contrib.gis.db.backends.postgis',
            'NAME': 'geodjango',
            'USER': 'geodjango',
        },
        'other': {
            'ENGINE': 'django.contrib.gis.db.backends.postgis',
            'NAME': 'other',
            'USER': 'geodjango',
        },
    }

    SECRET_KEY = 'django_tests_secret_key'

En supposant que les réglages ci-dessus se trouvent dans un fichier `postgis.py` dans le même répertoire que `runtests.py`, tous les tests de Django et GeoDjango seront effectués lors de l’exécution de la commande :

    $ ./runtests.py --settings=postgis

Pour ne lancer que la suite de tests de GeoDjango, indiquez `gis_tests`:

    $ ./runtests.py --settings=postgis gis_tests