14
14
* limitations under the License.
15
15
*/
16
16
17
- import { ODP_EVENT_ACTION , ODP_DEFAULT_EVENT_TYPE } from './../lib/utils/enums/index' ;
18
-
17
+ import { ODP_EVENT_ACTION , ODP_DEFAULT_EVENT_TYPE } from '../lib/utils/enums' ;
19
18
import { OdpConfig } from '../lib/core/odp/odp_config' ;
20
19
import { STATE } from '../lib/core/odp/odp_event_manager' ;
21
- import { NodeOdpEventManager as OdpEventManager } from '../lib/plugins/odp/event_manager/index.node' ;
20
+ import { BrowserOdpEventManager } from "../lib/plugins/odp/event_manager/index.browser" ;
21
+ import { NodeOdpEventManager , NodeOdpEventManager as OdpEventManager } from '../lib/plugins/odp/event_manager/index.node' ;
22
22
import { anything , capture , instance , mock , resetCalls , spy , verify , when } from 'ts-mockito' ;
23
23
import { NodeOdpEventApiManager as OdpEventApiManager } from '../lib/plugins/odp/event_api_manager/index.node' ;
24
24
import { LogHandler , LogLevel } from '../lib/modules/logging' ;
@@ -33,14 +33,12 @@ const EVENTS: OdpEvent[] = [
33
33
't1' ,
34
34
'a1' ,
35
35
new Map ( [ [ 'id-key-1' , 'id-value-1' ] ] ) ,
36
- new Map (
37
- Object . entries ( {
38
- 'key-1' : 'value1' ,
39
- 'key-2' : null ,
40
- 'key-3' : 3.3 ,
41
- 'key-4' : true ,
42
- } )
43
- )
36
+ new Map < string , unknown > ( [
37
+ [ 'key-1' , 'value1' ] ,
38
+ [ 'key-2' , null ] ,
39
+ [ 'key-3' , 3.3 ] ,
40
+ [ 'key-4' , true ] ,
41
+ ] ) ,
44
42
) ,
45
43
new OdpEvent (
46
44
't2' ,
@@ -90,6 +88,26 @@ const PROCESSED_EVENTS: OdpEvent[] = [
90
88
)
91
89
) ,
92
90
] ;
91
+ const EVENT_WITH_EMPTY_IDENTIFIER = new OdpEvent (
92
+ 't4' ,
93
+ 'a4' ,
94
+ new Map ( ) ,
95
+ new Map < string , unknown > ( [
96
+ [ 'key-53f3' , true ] ,
97
+ [ 'key-a04a' , 123 ] ,
98
+ [ 'key-2ab4' , 'Linus Torvalds' ] ,
99
+ ] ) ,
100
+ ) ;
101
+ const EVENT_WITH_UNDEFINED_IDENTIFIER = new OdpEvent (
102
+ 't4' ,
103
+ 'a4' ,
104
+ undefined ,
105
+ new Map < string , unknown > ( [
106
+ [ 'key-53f3' , false ] ,
107
+ [ 'key-a04a' , 456 ] ,
108
+ [ 'key-2ab4' , 'Bill Gates' ]
109
+ ] ) ,
110
+ ) ;
93
111
const makeEvent = ( id : number ) => {
94
112
const identifiers = new Map < string , string > ( ) ;
95
113
identifiers . set ( 'identifier1' , 'value1-' + id ) ;
@@ -185,12 +203,10 @@ describe('OdpEventManager', () => {
185
203
't3' ,
186
204
'a3' ,
187
205
new Map ( [ [ 'id-key-3' , 'id-value-3' ] ] ) ,
188
- new Map (
189
- Object . entries ( {
190
- 'key-1' : false ,
191
- 'key-2' : { random : 'object' , whichShouldFail : true } ,
192
- } )
193
- )
206
+ new Map < string , unknown > ( [
207
+ [ 'key-1' , false ] ,
208
+ [ 'key-2' , { random : 'object' , whichShouldFail : true } ] ,
209
+ ] ) ,
194
210
) ;
195
211
eventManager . sendEvent ( badEvent ) ;
196
212
@@ -455,4 +471,38 @@ describe('OdpEventManager', () => {
455
471
expect ( eventManager [ 'odpConfig' ] . segmentsToCheck ) . toContain ( Array . from ( segmentsToCheck ) [ 0 ] ) ;
456
472
expect ( eventManager [ 'odpConfig' ] . segmentsToCheck ) . toContain ( Array . from ( segmentsToCheck ) [ 1 ] ) ;
457
473
} ) ;
474
+
475
+ it ( 'should error when no identifiers are provided in Node' , ( ) => {
476
+ const eventManager = new NodeOdpEventManager ( {
477
+ odpConfig,
478
+ apiManager,
479
+ logger,
480
+ clientEngine,
481
+ clientVersion,
482
+ } ) ;
483
+
484
+ eventManager . start ( ) ;
485
+ eventManager . sendEvent ( EVENT_WITH_EMPTY_IDENTIFIER ) ;
486
+ eventManager . sendEvent ( EVENT_WITH_UNDEFINED_IDENTIFIER ) ;
487
+ eventManager . stop ( ) ;
488
+
489
+ verify ( mockLogger . log ( LogLevel . ERROR , 'ODP events should have at least one key-value pair in identifiers.' ) ) . twice ( ) ;
490
+ } ) ;
491
+
492
+ it ( 'should never error when no identifiers are provided in Browser' , ( ) => {
493
+ const eventManager = new BrowserOdpEventManager ( {
494
+ odpConfig,
495
+ apiManager,
496
+ logger,
497
+ clientEngine,
498
+ clientVersion,
499
+ } ) ;
500
+
501
+ eventManager . start ( ) ;
502
+ eventManager . sendEvent ( EVENT_WITH_EMPTY_IDENTIFIER ) ;
503
+ eventManager . sendEvent ( EVENT_WITH_UNDEFINED_IDENTIFIER ) ;
504
+ eventManager . stop ( ) ;
505
+
506
+ verify ( mockLogger . log ( LogLevel . ERROR , 'ODP events should have at least one key-value pair in identifiers.' ) ) . never ( ) ;
507
+ } ) ;
458
508
} ) ;
0 commit comments