diff --git a/test/conftest.py b/test/conftest.py index 38fa426f64bd4365511221b3c679ff6c1cd31181..731e0a3c1894d10f73a29cbbc4f6c79ec045108a 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -33,6 +33,7 @@ from starlette.testclient import TestClient from urllib3_mock import Responses from gso.services.partners import PartnerSchema, create_partner +from gso.services.subscriptions import is_resource_type_value_unique from gso.utils.types.interfaces import LAGMember, LAGMemberList from test.fixtures import * # noqa: F403 @@ -83,21 +84,25 @@ class FakerProvider(BaseProvider): return f"TT#{random_date}{random_int}" + def generate_unique_id(self, field_name: str, prefix: str, min_value: int = 50000, max_value: int = 99999) -> str: + """Generate a unique ID with a given prefix and ensure uniqueness in the database.""" + while True: + random_int = self.generator.random_int(min=min_value, max=max_value) + unique_id = f"{prefix}-{random_int}" + if is_resource_type_value_unique(field_name, unique_id): + return unique_id + def ga_id(self) -> str: - random_int = self.generator.random_int(min=50000, max=99999) - return f"GA-{random_int}" + return self.generate_unique_id("ga_id", "GA") def gs_id(self) -> str: - random_int = self.generator.random_int(min=50000, max=99999) - return f"GS-{random_int}" + return self.generate_unique_id("gs_id", "GS") def imported_ga_id(self) -> str: - random_int = self.generator.random_int(min=00000, max=50000) - return f"GA-{random_int}" + return self.generate_unique_id("ga_id", "GA", min_value=00000, max_value=50000) def imported_gs_id(self) -> str: - random_int = self.generator.random_int(min=00000, max=50000) - return f"GS-{random_int}" + return self.generate_unique_id("gs_id", "GS", min_value=00000, max_value=50000) def site_name(self) -> str: site_name = "".join(self.generator.random_letter().upper() for _ in range(3))