diff --git a/tests/e2e/program/program/parameter/conftest.py b/tests/e2e/program/program/parameter/conftest.py index e9592846..b5aca749 100644 --- a/tests/e2e/program/program/parameter/conftest.py +++ b/tests/e2e/program/program/parameter/conftest.py @@ -1,5 +1,7 @@ import pytest +EXTERNAL_ID = "e2eCreatedProgramParameter" + @pytest.fixture def parameter_id(e2e_config): @@ -14,7 +16,7 @@ def invalid_parameter_id(): @pytest.fixture def parameter_data(): return { - "externalId": "e2eCreatedProgramParameter", + "externalId": EXTERNAL_ID, "displayOrder": 100, "scope": "Enrollment", "phase": "Fulfillment", diff --git a/tests/e2e/program/program/parameter/test_async_parameter.py b/tests/e2e/program/program/parameter/test_async_parameter.py index cf636a34..6986c993 100644 --- a/tests/e2e/program/program/parameter/test_async_parameter.py +++ b/tests/e2e/program/program/parameter/test_async_parameter.py @@ -2,6 +2,7 @@ from mpt_api_client.exceptions import MPTAPIError from mpt_api_client.rql.query_builder import RQLQuery +from tests.e2e.program.program.parameter.conftest import EXTERNAL_ID pytestmark = [pytest.mark.flaky] @@ -9,7 +10,19 @@ @pytest.fixture async def created_parameter(async_mpt_vendor, program_id, parameter_data): service = async_mpt_vendor.program.programs.parameters(program_id) - parameter = await service.create(parameter_data) + try: + parameter = await service.create(parameter_data) + except MPTAPIError as error: + if ( + error.status_code == 400 + and error.detail + and f"Parameter with given external identifier '{EXTERNAL_ID}' already " + "exists for given program." + in error.detail + ): + parameter = await service.filter(RQLQuery(externalId=EXTERNAL_ID)).fetch_one() + else: + raise yield parameter try: await service.delete(parameter.id) diff --git a/tests/e2e/program/program/parameter/test_sync_parameter.py b/tests/e2e/program/program/parameter/test_sync_parameter.py index 00a31408..ba6fc551 100644 --- a/tests/e2e/program/program/parameter/test_sync_parameter.py +++ b/tests/e2e/program/program/parameter/test_sync_parameter.py @@ -2,6 +2,7 @@ from mpt_api_client.exceptions import MPTAPIError from mpt_api_client.rql.query_builder import RQLQuery +from tests.e2e.program.program.parameter.conftest import EXTERNAL_ID pytestmark = [pytest.mark.flaky] @@ -9,7 +10,19 @@ @pytest.fixture def created_parameter(mpt_vendor, program_id, parameter_data): service = mpt_vendor.program.programs.parameters(program_id) - parameter = service.create(parameter_data) + try: + parameter = service.create(parameter_data) + except MPTAPIError as error: + if ( + error.status_code == 400 + and error.detail + and f"Parameter with given external identifier '{EXTERNAL_ID}' already " + "exists for given program." + in error.detail + ): + parameter = service.filter(RQLQuery(externalId=EXTERNAL_ID)).fetch_one() + else: + raise yield parameter try: service.delete(parameter.id)