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