Ver código fonte

Complète les tests unitaires

omassot 6 anos atrás
pai
commit
e3bd89dd2b
4 arquivos alterados com 79 adições e 14 exclusões
  1. 11 6
      schemas/mn1_rec.py
  2. 10 6
      schemas/mn2_rec.py
  3. 28 1
      test/test_mn1_rec.py
  4. 30 1
      test/test_mn2_rec.py

+ 11 - 6
schemas/mn1_rec.py

@@ -25,7 +25,7 @@ CRS = 'EPSG:3949' # Coordinate Reference System
 
 TOLERANCE = 1.0
 
-COUCHE_PRISES = "FTTH_SITES_GEO_VALIDE"
+
 
 class Artere(QgsModel):
     layername = "artere_geo"
@@ -185,9 +185,12 @@ class Zapbo(QgsModel):
               'COMMENTAIR': {'type': 'string', 'maxlength': 254, 'empty': True}, 
               'STATUT': {'type': 'string', 'empty': False, 'allowed': ['APS', 'APD', 'EXE', 'REC']}}
     
-
 models = [Artere, Cable, Equipement, Noeud, Tranchee, Zapbo]
 
+class Prise(QgsModel):
+    layername = "FTTH_SITES_GEO_VALIDE"
+
+
 ####### Validateur
 
 class Mn1Checker(BaseChecker):
@@ -218,13 +221,15 @@ class Mn1Checker(BaseChecker):
         for equipement in self.equipements:
             equipement.noeud = next((n for n in self.noeuds if n.NO_NOM == equipement.EQ_NOM_NOE), None)
         
+        self.prises = []
+        Prise.layer = next((l for l in QgsProject.instance().mapLayers().values() \
+                          if l.name().lower() == Prise.layername.lower()), None)
+        
     def _load_prises(self):
         """ on charge la couche des prises si elle existe """
         self.prises = []
-        prises_layer = next((l for l in QgsProject.instance().mapLayers().values() \
-                          if l.name().lower() == COUCHE_PRISES.lower()), None)
-        if prises_layer:
-            self.prises = [QgsModel(f) for f in prises_layer.getFeatures()]
+        if Prise.layer:
+            self.prises = [Prise(f) for f in Prise.layer.getFeatures()]
         
     def test_load_layers(self):
         """ Chargement des données

+ 10 - 6
schemas/mn2_rec.py

@@ -28,8 +28,6 @@ CRS = 'EPSG:3949' # Coordinate Reference System
 
 TOLERANCE = 1.0
 
-COUCHE_PRISES = "FTTH_SITES_GEO_VALIDE"
-
 ##### Modeles
 
 class Artere(QgsModel):
@@ -207,6 +205,10 @@ class Zapbo(QgsModel):
     
 models = [Artere, Cable, Equipement, Noeud, Tranchee, Zapbo]
     
+
+class Prise(QgsModel):
+    layername = "FTTH_SITES_GEO_VALIDE"
+    
 ####### Validateur
 
 
@@ -238,13 +240,15 @@ class Mn2Checker(BaseChecker):
         for equipement in self.equipements:
             equipement.noeud = next((n for n in self.noeuds if n.NO_CODE == equipement.EQ_NOM_NOE), None)
         
+        self.prises = []
+        Prise.layer = next((l for l in QgsProject.instance().mapLayers().values() \
+                          if l.name().lower() == Prise.layername.lower()), None)
+        
     def _load_prises(self):
         """ on charge la couche des prises si elle existe """
         self.prises = []
-        prises_layer = next((l for l in QgsProject.instance().mapLayers().values() \
-                          if l.name().lower() == COUCHE_PRISES.lower()), None)
-        if prises_layer:
-            self.prises = [QgsModel(f) for f in prises_layer.getFeatures()]
+        if Prise.layer:
+            self.prises = [QgsModel(f) for f in Prise.layer.getFeatures()]
         
     def test_load_layers(self):
         """ Chargement des données

+ 28 - 1
test/test_mn1_rec.py

@@ -7,7 +7,7 @@ import logging
 from qgis.core import QgsCoordinateReferenceSystem, QgsGeometry, QgsPointXY
 import re
 
-from core.checking import SUCCESS, FAILURE
+from core.checking import SUCCESS, FAILURE, ERROR
 from path import Path
 from test._base import SchemaTest
 
@@ -41,6 +41,10 @@ class Test(SchemaTest):
         if not r.status == FAILURE:
             raise AssertionError("Le test n'aurait pas dû réussir")
     
+    def assertError(self, r):
+        if not r.status == ERROR:
+            raise AssertionError("Le test n'a pas levé d'erreur")
+    
     def assertErrorLogged(self, result, err_msg):
         if not any((re.fullmatch(err_msg, err.message) for err in result.errors)):
             print(result.errors)
@@ -459,6 +463,23 @@ class Test(SchemaTest):
         self.assertSuccess(r)
         self.assertEqual(len(r.errors), 0)
         
+        # pas de prise dans la zapbo
+        new_geom = self.checker.zapbos[0]._feature.geometry()
+        new_geom.translate(1000,1000)
+        self.checker.zapbos[0]._feature.setGeometry(new_geom)
+        
+        r = self.run_test("test_zapbos_prises", True)
+        self.assertFailure(r)
+        self.assertErrorLogged(r, "La Zapbo ne contient aucune prise")
+        
+        # couche non chargée
+        self.schema.Prise.layer = None
+
+        r = self.run_test("test_zapbos_prises", True)
+        
+        self.assertError(r)
+        self.assertErrorLogged(r, "La couche des prises n'est pas chargée")
+        
     def test_pbo_dimension(self):
         
         # cas initial: valide
@@ -468,5 +489,11 @@ class Test(SchemaTest):
         self.assertSuccess(r)
         self.assertEqual(len(r.errors), 0)
         
+        # couche non chargée
+        self.schema.Prise.layer = None
+        
+        r = self.run_test("test_pbo_dimension", True)
         
+        self.assertError(r)
+        self.assertErrorLogged(r, "La couche des prises n'est pas chargée")
         

+ 30 - 1
test/test_mn2_rec.py

@@ -7,7 +7,7 @@ import logging
 from qgis.core import QgsCoordinateReferenceSystem, QgsGeometry, QgsPointXY
 import re
 
-from core.checking import SUCCESS, FAILURE
+from core.checking import SUCCESS, FAILURE, ERROR
 from path import Path
 from test._base import SchemaTest
 
@@ -41,6 +41,10 @@ class Test(SchemaTest):
         if not r.status == FAILURE:
             raise AssertionError("Le test n'aurait pas dû réussir")
     
+    def assertError(self, r):
+        if not r.status == ERROR:
+            raise AssertionError("Le test n'a pas levé d'erreur")
+        
     def assertErrorLogged(self, result, err_msg):
         if not any((re.fullmatch(err_msg, err.message) for err in result.errors)):
             print(result.errors)
@@ -444,7 +448,24 @@ class Test(SchemaTest):
         self.assertEqual(r.title, 'Topologie: Zapbos / Prises')
         self.assertSuccess(r)
         self.assertEqual(len(r.errors), 0)
+
+        # pas de prise dans la zapbo
+        new_geom = self.checker.zapbos[0]._feature.geometry()
+        new_geom.translate(1000,1000)
+        self.checker.zapbos[0]._feature.setGeometry(new_geom)
+        
+        r = self.run_test("test_zapbos_prises", True)
+        self.assertFailure(r)
+        self.assertErrorLogged(r, "La Zapbo ne contient aucune prise")
+        
+        # couche non chargée
+        self.schema.Prise.layer = None
+
+        r = self.run_test("test_zapbos_prises", True)
         
+        self.assertError(r)
+        self.assertErrorLogged(r, "La couche des prises n'est pas chargée")
+
     def test_pbo_dimension(self):
         
         # cas initial: valide
@@ -453,4 +474,12 @@ class Test(SchemaTest):
         self.assertEqual(r.title, 'Dimensionnement des PBO')
         self.assertSuccess(r)
         self.assertEqual(len(r.errors), 0)
+        
+        # couche non chargée
+        self.schema.Prise.layer = None
+        
+        r = self.run_test("test_pbo_dimension", True)
+        
+        self.assertError(r)
+        self.assertErrorLogged(r, "La couche des prises n'est pas chargée")