Changeset 4ceca57 in flexoentity


Ignore:
Timestamp:
10/23/25 14:50:45 (3 months ago)
Author:
Enrico Schwass <ennoausberlin@…>
Branches:
master
Children:
33be5a0
Parents:
02d288d
Message:

some tests improved

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • flexoentity/flexo_entity.py

    r02d288d r4ceca57  
    146146        """
    147147       
    148         self.flexo_id = FlexOID.generate(self.domain_code(),
     148        self.flexo_id = FlexOID.safe_generate(self.domain_code(),
    149149                                         self.etype.short(),
    150150                                         self.state.short(),
     
    221221        if new_sig != self.signature:
    222222            self.signature = new_sig
    223             self.flexo_id = FlexOID.generate(self.domain_code(),
     223            self.flexo_id = FlexOID.safe_generate(self.domain_code(),
    224224                                             self.etype.short(),
    225225                                             self.state.short(),
     
    261261        self.updated_at = datetime.now(UTC)
    262262
     263    def lineage(self, repo):
     264        """Return full ancestry chain [origin → ... → self]."""
     265        chain = [self]
     266        current = self
     267        while current.origin and current.origin in repo:
     268            current = repo[current.origin]
     269            chain.insert(0, current)
     270        return chain
     271
    263272    def approve(self):
    264273        """
     
    268277        if self.state == EntityState.DRAFT:
    269278            new_version = self.flexo_id.version + 1
    270             new_fid = FlexOID.generate(self.domain_code(),
     279            new_fid = FlexOID.safe_generate(self.domain_code(),
    271280                self.etype.short(),
    272281                EntityState.APPROVED.short(),
     
    294303    def clone_new_base(self):
    295304        """Start new lineage when obsolete."""
     305        self.origin = str(self.flexo_id)
    296306        self.flexo_id = FlexOID.clone_new_base(
    297307            self.domain_code(),
  • flexoentity/id_factory.py

    r02d288d r4ceca57  
    8080    @staticmethod
    8181    def _blake_hash(text: str) -> str:
    82         """Return a 6-hex BLAKE2s digest."""
     82        """Return a 12-hex BLAKE2s digest."""
    8383        return hashlib.blake2s(text.encode("utf-8"), digest_size=6).hexdigest().upper()  # 6 bytes → 12 hex
    8484
     
    310310        - Used when creating "clones" or "variants" that should not share version history.
    311311        """
    312         return FlexOID.generate(domain, etype, estate, text, version=1)
     312        return FlexOID.safe_generate(domain, etype, estate, text, version=1)
    313313
    314314    def __str__(self):
  • tests/test_id_lifecycle.py

    r02d288d r4ceca57  
    9494    assert q.flexo_id.version == 1
    9595
     96def test_clone_new_base_sets_origin(radio_question):
     97    q = radio_question
     98    q.approve()
     99    q.sign()
     100    q.publish()
     101    old_id = str(q.flexo_id)
     102    q.obsolete()
     103    q.clone_new_base()
     104    assert q.origin == old_id
     105    assert q.state == EntityState.DRAFT
     106    assert q.flexo_id.version == 1
     107    assert q.flexo_id != old_id
    96108
    97109def test_mass_version_increments_until_obsolete(radio_question):
  • tests/test_id_stress.py

    r02d288d r4ceca57  
    1414def test_bulk_generation_uniqueness(domain):
    1515    """
    16     Generate 10,000 IDs and ensure uniqueness using safe_generate().
     16    Generate 100,000 IDs and ensure uniqueness using safe_generate().
    1717    If a collision occurs, safe_generate() must resolve it automatically
    1818    via salt + date adjustment.
     
    2020    etype = EntityType.QUESTION
    2121    estate = EntityState.DRAFT
    22     seeds = [f"question {i}" for i in range(4000000)]
     22    seeds = [f"question {i}" for i in range(100000)]
    2323
    2424    # Simulate a simple in-memory repository for collision detection
Note: See TracChangeset for help on using the changeset viewer.