- Timestamp:
- 11/18/25 13:34:13 (2 months ago)
- Branches:
- master
- Children:
- 8840db7
- Parents:
- 4dc09bb
- Location:
- tests
- Files:
-
- 2 added
- 3 edited
-
conftest.py (modified) (2 diffs)
-
test_domain.py (added)
-
test_flexoid.py (modified) (3 diffs)
-
test_from_strings.py (added)
-
test_id_stress.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/conftest.py
r4dc09bb r6ad031b 46 46 if not getattr(self, "flexo_id", None): 47 47 self.flexo_id = FlexOID.safe_generate( 48 domain=self.d efault_domain_code,48 domain=self.domain_id, 49 49 entity_type=SingleChoiceQuestion.ENTITY_TYPE.value, # 'I' 50 50 estate=EntityState.DRAFT.value, # 'D' … … 86 86 87 87 @pytest.fixture 88 def domain(): 89 return Domain.default() 88 def sample_domain(): 89 domain_id = "PY_ARITHM" 90 flexo_id = FlexOID.safe_generate(domain_id=domain_id, 91 entity_type=EntityType.DOMAIN.value, 92 state=EntityState.DRAFT.value, text=domain_id) 93 return Domain(flexo_id=flexo_id, fullname="PYTHON_ARITHMETIC", 94 description="ALL ABOUT ARITHMETIC IN PYTHON") 90 95 91 96 @pytest.fixture 92 def sample_question(): 93 q = SingleChoiceQuestion(text="What is 2 + 2?", 97 def sample_question(sample_domain): 98 flexo_id = FlexOID.safe_generate(domain_id=sample_domain.domain_id, 99 entity_type=EntityType.ITEM.value, 100 state=EntityState.DRAFT.value, 101 text="What is 2 + 2") 102 q = SingleChoiceQuestion(flexo_id=flexo_id, text="What is 2 + 2?", 94 103 options=[]) 95 104 q._update_fingerprint() -
tests/test_flexoid.py
r4dc09bb r6ad031b 25 25 fid = FlexOID("GEN-I251101-ABCDEF123456@001D") 26 26 assert isinstance(fid, str) 27 assert fid.domain == "GEN"27 assert fid.domain_id == "GEN" 28 28 assert fid.entity_type == "I" 29 29 assert fid.date_str == "251101" … … 58 58 assert fid1 == fid2 # deterministic 59 59 assert fid1.hash_part == fid2.hash_part 60 assert fid1.domain == "GEN"60 assert fid1.domain_id == "GEN" 61 61 assert fid1.entity_type == "I" 62 62 … … 135 135 fid = FlexOID("GEN-I251101-ABCDEF123456@007S") 136 136 data = fid.parsed() 137 assert data["domain "] == "GEN"137 assert data["domain_id"] == "GEN" 138 138 assert data["entity_type"] == "I" 139 139 assert data["version"] == 7 -
tests/test_id_stress.py
r4dc09bb r6ad031b 14 14 logger = logging.getLogger(__name__) 15 15 16 def test_bulk_generation_uniqueness( domain):16 def test_bulk_generation_uniqueness(sample_domain): 17 17 """ 18 18 Generate 100,000 IDs and ensure uniqueness using safe_generate(). … … 33 33 ids = [] 34 34 for seed in seeds: 35 oid = FlexOID.safe_generate(domain.domain_code, entity_type.value, estate.value, seed, repo=repo) 35 oid = FlexOID.safe_generate(sample_domain.domain_id, entity_type.value, 36 estate.value, seed, repo=repo) 36 37 assert isinstance(oid, FlexOID) 37 38 ids.append(str(oid)) … … 48 49 49 50 # Sanity check: IDs should look canonical 50 assert all(id_str.startswith("GEN") for id_str in ids)51 # assert all(id_str.startswith("GENERIC") for id_str in ids) 51 52 assert all("@" in id_str for id_str in ids) 52 53 53 def test_id_generation_is_deterministic( domain):54 def test_id_generation_is_deterministic(sample_domain): 54 55 """ 55 56 Generating the same entity twice with same inputs yields identical ID. … … 60 61 text = "identical question text" 61 62 62 id1 = FlexOID.generate( domain.domain_code, entity_type.value, estate.value, text)63 id2 = FlexOID.generate( domain.domain_code, entity_type.value, estate.value, text)63 id1 = FlexOID.generate(sample_domain.domain_id, entity_type.value, estate.value, text) 64 id2 = FlexOID.generate(sample_domain.domain_id, entity_type.value, estate.value, text) 64 65 # IDs must be identical because generation is deterministic 65 66 assert id1 == id2 66 67 68 # def test_id_reproducibility_across_runs(domain):69 # """70 # The same seed on a new process (fresh _seen_hashes)71 # should yield the same base ID (without suffix).72 # """73 # entity_type = EntityType.CATALOG74 # estate = EntityState.DRAFT75 # seed = "reproducibility test seed"76 77 # id1 = FlexOID.generate(domain.domain_code, entity_type.value, estate.value, seed)78 # FlexOID._seen_hashes.clear()79 # id2 = FlexOID.generate(domain.domain_code, entity_type.value, estate.value, seed)80 81 # assert id1 == id282 67 83 68
Note:
See TracChangeset
for help on using the changeset viewer.
