Voici la documentation : https://geoplateforme.pages.gpf-tech.ign.fr/documentation

Skip to content
Extraits de code Groupes Projets

test(methods): IGNGPF-319 add unit tests for PublishAgent methods

Fermé Quy Thy Truong a demandé de fusionner test/IGNGPF-319 vers main
Fichiers
2
# import pytest
import unittest
from unittest import mock
@@ -17,13 +16,19 @@ liste_offres = [
"status": "PUBLISHED",
"layer_name": "tata",
},
{
"_id": "1723bcf4-ec22-4519-a1f1-1d631c5fd00c",
"type": "",
"status": "PUBLISHED",
"layer_name": "titi",
},
]
MESSAGE_ENTREPOT = {
"_id": "4c91dad8-bb16-489e-814e-5818773eafdd",
detail_offre = {
"_id": "df5687db-3b75-40b1-9b54-8fe874178d80",
"type": "PUBLICATION",
"configuration_type": "WFS",
"layer_name": "toto",
"layer_name": "tata",
"type_infos": {}, # JSON variable en fonction du type
"metadata": [{"format": "", "url": "", "type": ""}],
"attribution": {
@@ -33,7 +38,7 @@ MESSAGE_ENTREPOT = {
},
}
CONFIG = {"host": "localhost", "port": 5672, "exchange": "my_exchange"}
endpoint_name = "nom_du_endpoint"
pod_id = "id_du_pod"
url_entrepot = "https://entrepot.api.gouv/v1/technical/offers/"
@@ -46,8 +51,10 @@ agent = PublishAgent(
class TestPotCommun(unittest.TestCase):
def test_publish_agent(self):
"""Teste l'instanciation d'une classe PublishAgent"""
self.assertEqual(agent.endpoint_name, "nom_du_endpoint")
self.assertEqual(agent.pod_id, "id_du_pod")
assert len(agent.__dict__.keys()) == 10 # Teste le nombre d'attributs
def test_get_from_api_offerings(self):
mock_get_patcher = mock.patch("gpf_pyroger.publish_agent_core.requests.get")
@@ -60,18 +67,17 @@ class TestPotCommun(unittest.TestCase):
# Stop patching 'requests'.
mock_get_patcher.stop()
print("liste des offres à publier")
print(response)
self.assertEqual(response[0]["_id"], "4c91dad8-bb16-489e-814e-5818773eafdd")
self.assertEqual(len(response), 2)
self.assertEqual(len(response), 3) # Teste le nombre d'offres reçues
def test_get_from_api_details_offering(self):
id_offre = "4c91dad8-bb16-489e-814e-5818773eafdd"
"""Teste la méthode PublishAgent.get_from_api_details_offering"""
id_offre = "df5687db-3b75-40b1-9b54-8fe874178d80"
mock_get_patcher = mock.patch("gpf_pyroger.publish_agent_core.requests.get")
mock_get = mock_get_patcher.start() # Start patching 'requests.get'
mock_get.return_value = mock.Mock(status_code=200)
mock_get.return_value.json.return_value = MESSAGE_ENTREPOT
mock_get.return_value.json.return_value = detail_offre
# Call the service, which will send a request to the server.
response = agent.get_from_api_details_offering(id_offre)
# Stop patching 'requests'.
@@ -81,27 +87,30 @@ class TestPotCommun(unittest.TestCase):
self.assertEqual(len(response.keys()), 7)
self.assertEqual(response["type"], "PUBLICATION")
def test_alimenter_service(self):
def test_supply_service(self):
"""Teste la méthode PublishAgent.supply_service"""
with mock.patch(
"gpf_pyroger.publish_agent_core.PublishAgent.get_from_api_details_offering",
return_value=MESSAGE_ENTREPOT,
return_value=detail_offre,
) as mock_details_offering:
with mock.patch(
"gpf_pyroger.publish_agent_core.PublishAgent.get_from_api_offerings",
return_value=liste_offres,
):
offres = agent.supply_service()
self.assertEqual(len(offres), 1)
self.assertIn(
"_id", offres[0].keys()
) # Vérifie que l'offre a un identifiant
self.assertIsInstance(
offres[0]["_id"], str
) # Vérifie que l'identifiant est un str
self.assertEqual(
offres[0]["_id"], "4c91dad8-bb16-489e-814e-5818773eafdd"
)
self.assertEqual(len(offres[0].keys()), 7)
# Teste le nombre d'offres à traiter par l'agent au démarrage
# Ce sont celles au statut `PUBLISHED`
self.assertEqual(len(offres), 2)
def test_write_response(self):
resp = agent.write_response(offering=detail_offre, status="OK")
self.assertEqual(resp.get("_id"), detail_offre["_id"])
self.assertEqual(resp.get("endpointName"), "nom_du_endpoint")
self.assertEqual(resp.get("podId"), "id_du_pod")
self.assertEqual(resp.get("endpointName"), "nom_du_endpoint")
self.assertEqual(resp.get("type"), detail_offre["type"])
self.assertEqual(resp.get("status"), "OK")
self.assertEqual(resp.get("message"), "")
if __name__ == "__main__":
Chargement en cours