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))