1
1
import { EventContext , EventType , InitialSyncScope } from './extraction' ;
2
2
import { createEvent } from '../tests/test-helpers' ;
3
3
4
- describe ( 'EventContext' , ( ) => {
4
+ // Test the EventContext interface and related extraction types
5
+ describe ( 'ExtractionTypes' , ( ) => {
5
6
const baseEvent = createEvent ( { eventType : EventType . ExtractionDataStart } ) ;
6
7
7
8
it ( 'should create event context without optional fields' , ( ) => {
8
9
const event = { ...baseEvent } ;
10
+
9
11
// If this compiles, the test passes
10
12
expect ( event ) . toBeDefined ( ) ;
13
+ expect ( event . payload . event_context ) . toBeDefined ( ) ;
11
14
} ) ;
12
15
13
16
it ( 'should create event context with all optional fields' , ( ) => {
@@ -20,8 +23,10 @@ describe('EventContext', () => {
20
23
reset_extract_from : true
21
24
} as EventContext ;
22
25
23
- // Test with all optionals present
24
26
expect ( event ) . toBeDefined ( ) ;
27
+ expect ( event . payload . event_context . extract_from ) . toBe ( '2024-01-01T00:00:00Z' ) ;
28
+ expect ( event . payload . event_context . initial_sync_scope ) . toBe ( InitialSyncScope . TIME_SCOPED ) ;
29
+ expect ( event . payload . event_context . reset_extract_from ) . toBe ( true ) ;
25
30
} ) ;
26
31
27
32
it ( 'should create event context with partial optional fields' , ( ) => {
@@ -33,5 +38,75 @@ describe('EventContext', () => {
33
38
} as EventContext ;
34
39
35
40
expect ( event ) . toBeDefined ( ) ;
41
+ expect ( event . payload . event_context . extract_from ) . toBe ( '2024-01-01T00:00:00Z' ) ;
42
+ } ) ;
43
+
44
+ it ( 'should handle different InitialSyncScope values' , ( ) => {
45
+ const event = { ...baseEvent } ;
46
+
47
+ event . payload . event_context = {
48
+ ...baseEvent . payload . event_context ,
49
+ initial_sync_scope : InitialSyncScope . FULL_HISTORY
50
+ } as EventContext ;
51
+
52
+ expect ( event . payload . event_context . initial_sync_scope ) . toBe ( InitialSyncScope . FULL_HISTORY ) ;
53
+ } ) ;
54
+
55
+ describe ( '[Edges]' , ( ) => {
56
+ it ( 'should handle null event context gracefully' , ( ) => {
57
+ const event = { ...baseEvent } ;
58
+
59
+ event . payload . event_context = null as any ;
60
+
61
+ expect ( event . payload . event_context ) . toBeNull ( ) ;
62
+ } ) ;
63
+
64
+ it ( 'should handle undefined optional fields' , ( ) => {
65
+ const event = { ...baseEvent } ;
66
+
67
+ event . payload . event_context = {
68
+ ...baseEvent . payload . event_context ,
69
+ extract_from : undefined ,
70
+ initial_sync_scope : undefined ,
71
+ reset_extract_from : undefined
72
+ } as EventContext ;
73
+
74
+ expect ( event . payload . event_context . extract_from ) . toBeUndefined ( ) ;
75
+ expect ( event . payload . event_context . initial_sync_scope ) . toBeUndefined ( ) ;
76
+ expect ( event . payload . event_context . reset_extract_from ) . toBeUndefined ( ) ;
77
+ } ) ;
78
+
79
+ it ( 'should handle invalid date format in extract_from' , ( ) => {
80
+ const event = { ...baseEvent } ;
81
+
82
+ event . payload . event_context = {
83
+ ...baseEvent . payload . event_context ,
84
+ extract_from : 'invalid-date-format'
85
+ } as EventContext ;
86
+
87
+ expect ( event . payload . event_context . extract_from ) . toBe ( 'invalid-date-format' ) ;
88
+ // Note: Type validation would typically happen at runtime, not compile time
89
+ } ) ;
90
+
91
+ it ( 'should handle explicit boolean values for reset_extract_from' , ( ) => {
92
+ const eventWithTrue = createEvent ( {
93
+ eventType : EventType . ExtractionDataStart ,
94
+ eventContextOverrides : {
95
+ reset_extract_from : true
96
+ }
97
+ } ) ;
98
+
99
+ const eventWithFalse = createEvent ( {
100
+ eventType : EventType . ExtractionDataStart ,
101
+ eventContextOverrides : {
102
+ reset_extract_from : false
103
+ }
104
+ } ) ;
105
+
106
+ expect ( eventWithTrue . payload . event_context . reset_extract_from ) . toBe ( true ) ;
107
+ expect ( eventWithFalse . payload . event_context . reset_extract_from ) . toBe ( false ) ;
108
+ expect ( typeof eventWithTrue . payload . event_context . reset_extract_from ) . toBe ( 'boolean' ) ;
109
+ expect ( typeof eventWithFalse . payload . event_context . reset_extract_from ) . toBe ( 'boolean' ) ;
110
+ } ) ;
36
111
} ) ;
37
112
} ) ;
0 commit comments