Skip to content

Commit

Permalink
Merge pull request #66 from nens/added_tests
Browse files Browse the repository at this point in the history
precommit
  • Loading branch information
JJFlorian authored Apr 23, 2024
2 parents 61d84b1 + d553fec commit 1d115c0
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 4 deletions.
2 changes: 1 addition & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## 0.10 (unreleased)


- Nothing changed yet.
- Added gmw/gmn/upload/import


## 0.9 (2024-04-23)
Expand Down
64 changes: 62 additions & 2 deletions api/tests/test_bro_import.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import pytest
from django.conf import settings
from requests.exceptions import RequestException
from requests.exceptions import HTTPError, RequestException

from api.bro_import import bulk_import
from api.bro_import import bulk_import, object_import
from api.tests import fixtures

organisation = fixtures.organisation
Expand Down Expand Up @@ -44,3 +44,63 @@ def test_fetch_bro_ids_fail(mocker, bulk_importer):

with pytest.raises(bulk_import.FetchBROIDsError):
bulk_importer._fetch_bro_ids("url.com")


@pytest.fixture
def gmn_object_importer(organisation):
return object_import.GMNObjectImporter(
bro_domain="GMN", bro_id="GMN1234567890", data_owner=organisation.uuid
)


@pytest.mark.django_db
def test_object_importer_create_download_url(gmn_object_importer):
url = gmn_object_importer._create_download_url()

assert (
url
== f"{settings.BRO_UITGIFTE_SERVICE_URL}/gm/gmn/v1/objects/GMN1234567890?fullHistory=nee"
)


@pytest.mark.django_db
def test_object_importer_download_xml(mocker, gmn_object_importer):
expected_content = b"<xml>fake_data</xml>"
mock_get = mocker.patch("requests.get")
mock_response = mocker.Mock()
mock_response.raise_for_status = mocker.Mock()
mock_response.content = expected_content
mock_get.return_value = mock_response

# Test
url = "https://example.com/data.xml"
result = gmn_object_importer._download_xml(url)

# Assert
assert result == expected_content


@pytest.mark.django_db
def test_download_xml_http_error(mocker, gmn_object_importer):
# Setup
mock_get = mocker.patch("requests.get")
mock_response = mocker.Mock()
mock_response.raise_for_status.side_effect = HTTPError("Error occurred")
mock_get.return_value = mock_response

# Test
url = "https://example.com/data.xml"

# Assert that an HTTPError is raised
with pytest.raises(HTTPError):
gmn_object_importer._download_xml(url)


@pytest.mark.django_db
def test_convert_xml_to_json(gmn_object_importer):
xml = b"<xml>fake_data</xml>"
expected_json = {"xml": "fake_data"}

json_data = gmn_object_importer._convert_xml_to_json(xml)

assert json_data == expected_json
37 changes: 36 additions & 1 deletion api/tests/test_bro_upload.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import pytest

from api.bro_upload import delivery
from api.bro_upload import delivery, utils

expected_xml_str = """<registrationRequest xmlns="http://www.broservices.nl/xsd/isgmn/1.0"
xmlns:brocom="http://www.broservices.nl/xsd/brocommon/3.0"
Expand Down Expand Up @@ -94,3 +94,38 @@ def test_xml_generator2():
sourcedocs_data={},
)
generator.create_xml_file()


def test_simlify_validation_errors():
input_data = [
{
"type": "missing",
"loc": ["requestReference"],
"msg": "Field required",
"input": {},
"url": "https://errors.pydantic.dev/2.7/v/missing",
},
{
"type": "missing",
"loc": ["deliveryAccountableParty"],
"msg": "Field required",
"input": {},
"url": "https://errors.pydantic.dev/2.7/v/missing",
},
{
"type": "missing",
"loc": ["qualityRegime"],
"msg": "Field required",
"input": {},
"url": "https://errors.pydantic.dev/2.7/v/missing",
},
]
expected_output = {
"requestReference": "Field required",
"deliveryAccountableParty": "Field required",
"qualityRegime": "Field required",
}

output = utils.simplify_validation_errors(input_data)

assert output == expected_output
37 changes: 37 additions & 0 deletions gmn/tests/test_gmn_serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from datetime import date, datetime

import pytest

from api.tests import fixtures
from gmn import serializers

# this setup is chosen because ruff removes the fixture imports in other methods
organisation = fixtures.organisation
gmn = fixtures.gmn
gmw = fixtures.gmw


@pytest.mark.django_db
def test_gmn_serialization(gmn):
serializer = serializers.GMNSerializer(instance=gmn)
assert serializer.data["bro_id"] == gmn.bro_id


@pytest.mark.django_db
def test_gmn_deserialization(gmn, organisation):
input_data = {
"data_owner": organisation.uuid,
"bro_id": "GMN123456789",
"delivery_accountable_party": "12345678",
"quality_regime": "IMBRO",
"name": "test",
"delivery_context": "test",
"monitoring_purpose": "test",
"groundwater_aspect": "test",
"start_date_monitoring": date(2000, 1, 1),
"object_registration_time": datetime(2000, 1, 1),
"registration_status": "test",
"color": "#000fff",
}
serializer = serializers.GMNSerializer(data=input_data)
assert serializer.is_valid(), serializer.errors
14 changes: 14 additions & 0 deletions gmw/tests/test_gmw_serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import pytest

from api.tests import fixtures
from gmw import serializers

# this setup is chosen because ruff removes the fixture imports in other methods
organisation = fixtures.organisation
gmw = fixtures.gmw


@pytest.mark.django_db
def test_gmw_serialization(gmw):
serializer = serializers.GMWSerializer(instance=gmw)
assert serializer.data["bro_id"] == gmw.bro_id

0 comments on commit 1d115c0

Please sign in to comment.