diff --git a/CHANGES.md b/CHANGES.md index 2373142..9d6ee02 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,7 +3,7 @@ ## 0.10 (unreleased) -- Nothing changed yet. +- Added gmw/gmn/upload/import ## 0.9 (2024-04-23) diff --git a/api/tests/test_bro_import.py b/api/tests/test_bro_import.py index c8a1dcc..3fc86e2 100644 --- a/api/tests/test_bro_import.py +++ b/api/tests/test_bro_import.py @@ -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 @@ -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"fake_data" + 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"fake_data" + expected_json = {"xml": "fake_data"} + + json_data = gmn_object_importer._convert_xml_to_json(xml) + + assert json_data == expected_json diff --git a/api/tests/test_bro_upload.py b/api/tests/test_bro_upload.py index 309fe33..1b38aa7 100644 --- a/api/tests/test_bro_upload.py +++ b/api/tests/test_bro_upload.py @@ -1,6 +1,6 @@ import pytest -from api.bro_upload import delivery +from api.bro_upload import delivery, utils expected_xml_str = """