Skip to content

Commit 0bb9997

Browse files
author
Evan Greer
committed
feat: adds unit tests for IterableMessageMetadata
1 parent b78f8e0 commit 0bb9997

2 files changed

Lines changed: 75 additions & 8 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { IterableEmbeddedMessageMetadata } from '../embedded/classes/IterableEmbeddedMessageMetadata';
2+
import type { EmbeddedMessageMetadataDict } from '../embedded/classes/IterableEmbeddedMessageMetadata';
3+
import { Iterable } from '../core';
4+
5+
describe('IterableEmbeddedMessage', () => {
6+
test('should create an instance of IterableEmbeddedMessageMetadata from a dictionary', () => {
7+
Iterable.logger.log(
8+
'iterableEmbeddedMessageMetadata_fromDict_valid_dictionary'
9+
);
10+
11+
const dict = {
12+
messageId: '123',
13+
placementId: 456,
14+
campaignId: 789,
15+
isProof: false,
16+
};
17+
18+
const result = IterableEmbeddedMessageMetadata.fromDict(dict);
19+
20+
expect(result).toBeInstanceOf(IterableEmbeddedMessageMetadata);
21+
expect(result.messageId).toBe('123');
22+
expect(result.placementId).toBe(456);
23+
expect(result.campaignId).toBe(789);
24+
expect(result.isProof).toBe(false);
25+
});
26+
27+
test('should handle optional fields', () => {
28+
Iterable.logger.log(
29+
'iterableEmbeddedMessageMetadata_fromDict_optional_fields_omitted'
30+
);
31+
32+
const dict = {
33+
messageId: '123',
34+
placementId: 456,
35+
};
36+
37+
const result = IterableEmbeddedMessageMetadata.fromDict(dict);
38+
39+
expect(result).toBeInstanceOf(IterableEmbeddedMessageMetadata);
40+
expect(result.messageId).toBe('123');
41+
expect(result.placementId).toBe(456);
42+
expect(result.campaignId).toBeUndefined();
43+
expect(result.isProof).toBe(false);
44+
});
45+
46+
test('should throw an error if messageId is not provided', () => {
47+
Iterable.logger.log(
48+
'iterableEmbeddedMessageMetadata_fromDict_missing_messageId'
49+
);
50+
51+
const dict = {
52+
placementId: 456,
53+
};
54+
55+
expect(() => {
56+
IterableEmbeddedMessageMetadata.fromDict(
57+
dict as Partial<EmbeddedMessageMetadataDict>
58+
);
59+
}).toThrow('messageId and placementId are required');
60+
});
61+
});

src/embedded/classes/IterableEmbeddedMessageMetadata.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
export class IterableEmbeddedMessageMetadata {
2-
static readonly TAG = 'ItblEmbeddedMessageMetadata';
3-
42
readonly messageId: string;
53
readonly placementId: number;
64
readonly campaignId?: number;
@@ -17,12 +15,13 @@ export class IterableEmbeddedMessageMetadata {
1715
this.campaignId = campaignId;
1816
this.isProof = isProof;
1917
}
20-
static fromDict(dict: {
21-
messageId: string;
22-
placementId: number;
23-
campaignId: number | undefined;
24-
isProof: boolean;
25-
}): IterableEmbeddedMessageMetadata {
18+
19+
static fromDict(
20+
dict: Partial<EmbeddedMessageMetadataDict>
21+
): IterableEmbeddedMessageMetadata {
22+
if (!dict.messageId || !dict.placementId) {
23+
throw new Error('messageId and placementId are required');
24+
}
2625
return new IterableEmbeddedMessageMetadata(
2726
dict.messageId,
2827
dict.placementId,
@@ -31,3 +30,10 @@ export class IterableEmbeddedMessageMetadata {
3130
);
3231
}
3332
}
33+
34+
export interface EmbeddedMessageMetadataDict {
35+
messageId: string;
36+
placementId: number;
37+
campaignId?: number;
38+
isProof?: boolean;
39+
}

0 commit comments

Comments
 (0)