Skip to content

Commit ee001de

Browse files
author
Evan Greer
committed
feat: adds unit tests for IterableEmbeddedPlacement
1 parent 9ce071e commit ee001de

2 files changed

Lines changed: 105 additions & 1 deletion

File tree

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import { IterableEmbeddedPlacement } from '../embedded/classes/IterableEmbeddedPlacement';
2+
import { IterableEmbeddedMessage } from '../embedded/classes/IterableEmbeddedMessage';
3+
import { Iterable } from '../core/classes/Iterable';
4+
5+
describe('IterableEmbeddedPlacement', () => {
6+
it('should create an instance with placementId and messages', () => {
7+
Iterable.logger.log('iterableEmbeddedPlacement_fromDict_with_messages');
8+
9+
const dict = {
10+
placementId: 123,
11+
messages: [
12+
{
13+
metadata: {
14+
messageId: 'msg-1',
15+
placementId: 123,
16+
isProof: false,
17+
},
18+
elements: {
19+
title: 'First Message',
20+
body: 'Body of first message',
21+
},
22+
},
23+
{
24+
metadata: {
25+
messageId: 'msg-2',
26+
placementId: 123,
27+
isProof: false,
28+
},
29+
elements: {
30+
title: 'Second Message',
31+
body: 'Body of second message',
32+
},
33+
},
34+
],
35+
};
36+
37+
const placement = IterableEmbeddedPlacement.fromDict(dict);
38+
39+
expect(placement).toBeInstanceOf(IterableEmbeddedPlacement);
40+
expect(placement.placementId).toBe(123);
41+
expect(placement.messages).toBeDefined();
42+
expect(placement.messages!.length).toBe(2);
43+
const messages = placement.messages as [
44+
IterableEmbeddedMessage,
45+
IterableEmbeddedMessage,
46+
];
47+
expect(messages[0]).toBeInstanceOf(IterableEmbeddedMessage);
48+
expect(messages[1]).toBeInstanceOf(IterableEmbeddedMessage);
49+
expect(messages[0].metadata.messageId).toBe('msg-1');
50+
expect(messages[1].metadata.messageId).toBe('msg-2');
51+
});
52+
53+
it('should create an instance with only placementId', () => {
54+
Iterable.logger.log('iterableEmbeddedPlacement_fromDict_placementId_only');
55+
56+
const dict = {
57+
placementId: 456,
58+
};
59+
60+
const placement = IterableEmbeddedPlacement.fromDict(dict);
61+
62+
expect(placement).toBeInstanceOf(IterableEmbeddedPlacement);
63+
expect(placement.placementId).toBe(456);
64+
expect(placement.messages).toBeUndefined();
65+
});
66+
67+
it('should throw an error if placementId is missing', () => {
68+
Iterable.logger.log(
69+
'iterableEmbeddedPlacement_fromDict_missing_placementId'
70+
);
71+
72+
const dict = {
73+
messages: [
74+
{
75+
metadata: {
76+
messageId: 'msg-1',
77+
placementId: 123,
78+
isProof: false,
79+
},
80+
},
81+
],
82+
};
83+
84+
expect(() => IterableEmbeddedPlacement.fromDict(dict)).toThrow(
85+
'placementId is required'
86+
);
87+
});
88+
89+
it('should handle empty messages array', () => {
90+
Iterable.logger.log('iterableEmbeddedPlacement_fromDict_empty_messages');
91+
92+
const dict = {
93+
placementId: 789,
94+
messages: [],
95+
};
96+
97+
const placement = IterableEmbeddedPlacement.fromDict(dict);
98+
99+
expect(placement).toBeInstanceOf(IterableEmbeddedPlacement);
100+
expect(placement.placementId).toBe(789);
101+
expect(placement.messages).toBeDefined();
102+
expect(placement.messages!.length).toBe(0);
103+
});
104+
});

src/embedded/classes/IterableEmbeddedPlacement.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,5 @@ export class IterableEmbeddedPlacement {
3333

3434
interface EmbeddedPlacementDict {
3535
placementId: number;
36-
messages: IterableEmbeddedMessage[];
36+
messages?: IterableEmbeddedMessage[];
3737
}

0 commit comments

Comments
 (0)