identity-events.spec.ts raw

   1  import {
   2    IdentityCreated,
   3    IdentityRenamed,
   4    IdentitySelected,
   5    IdentitySigned,
   6    IdentityDeleted,
   7  } from './identity-events';
   8  
   9  describe('Identity Domain Events', () => {
  10    describe('IdentityCreated', () => {
  11      it('should store identity creation data', () => {
  12        const event = new IdentityCreated('id-123', 'pubkey-abc', 'Alice');
  13  
  14        expect(event.identityId).toEqual('id-123');
  15        expect(event.publicKey).toEqual('pubkey-abc');
  16        expect(event.nickname).toEqual('Alice');
  17      });
  18  
  19      it('should have correct event type', () => {
  20        const event = new IdentityCreated('id', 'pubkey', 'name');
  21  
  22        expect(event.eventType).toEqual('identity.created');
  23      });
  24  
  25      it('should have inherited base properties', () => {
  26        const event = new IdentityCreated('id', 'pubkey', 'name');
  27  
  28        expect(event.eventId).toBeTruthy();
  29        expect(event.occurredAt).toBeInstanceOf(Date);
  30      });
  31    });
  32  
  33    describe('IdentityRenamed', () => {
  34      it('should store rename data', () => {
  35        const event = new IdentityRenamed('id-123', 'OldName', 'NewName');
  36  
  37        expect(event.identityId).toEqual('id-123');
  38        expect(event.oldNickname).toEqual('OldName');
  39        expect(event.newNickname).toEqual('NewName');
  40      });
  41  
  42      it('should have correct event type', () => {
  43        const event = new IdentityRenamed('id', 'old', 'new');
  44  
  45        expect(event.eventType).toEqual('identity.renamed');
  46      });
  47    });
  48  
  49    describe('IdentitySelected', () => {
  50      it('should store selection data with previous identity', () => {
  51        const event = new IdentitySelected('id-new', 'id-old');
  52  
  53        expect(event.identityId).toEqual('id-new');
  54        expect(event.previousIdentityId).toEqual('id-old');
  55      });
  56  
  57      it('should handle null previous identity', () => {
  58        const event = new IdentitySelected('id-new', null);
  59  
  60        expect(event.identityId).toEqual('id-new');
  61        expect(event.previousIdentityId).toBeNull();
  62      });
  63  
  64      it('should have correct event type', () => {
  65        const event = new IdentitySelected('id', null);
  66  
  67        expect(event.eventType).toEqual('identity.selected');
  68      });
  69    });
  70  
  71    describe('IdentitySigned', () => {
  72      it('should store signing data', () => {
  73        const event = new IdentitySigned('id-123', 1, 'event-id-abc');
  74  
  75        expect(event.identityId).toEqual('id-123');
  76        expect(event.eventKind).toBe(1);
  77        expect(event.signedEventId).toEqual('event-id-abc');
  78      });
  79  
  80      it('should have correct event type', () => {
  81        const event = new IdentitySigned('id', 1, 'event-id');
  82  
  83        expect(event.eventType).toEqual('identity.signed');
  84      });
  85  
  86      it('should handle various event kinds', () => {
  87        const kindExamples = [0, 1, 3, 4, 7, 30023, 10002];
  88  
  89        kindExamples.forEach(kind => {
  90          const event = new IdentitySigned('id', kind, 'event');
  91          expect(event.eventKind).toBe(kind);
  92        });
  93      });
  94    });
  95  
  96    describe('IdentityDeleted', () => {
  97      it('should store deletion data', () => {
  98        const event = new IdentityDeleted('id-123', 'pubkey-abc');
  99  
 100        expect(event.identityId).toEqual('id-123');
 101        expect(event.publicKey).toEqual('pubkey-abc');
 102      });
 103  
 104      it('should have correct event type', () => {
 105        const event = new IdentityDeleted('id', 'pubkey');
 106  
 107        expect(event.eventType).toEqual('identity.deleted');
 108      });
 109    });
 110  });
 111