@@ -4762,6 +4762,128 @@ public void sendODPEvent() {
47624762 assertEquals (data , eventArgument .getValue ().getData ());
47634763 }
47644764
4765+ @ Test
4766+ @ SuppressFBWarnings (value = "NP_NONNULL_PARAM_VIOLATION" , justification = "Testing nullness contract violation" )
4767+ public void sendODPEventErrorNullAction () {
4768+ ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
4769+ Mockito .when (mockProjectConfigManager .getConfig ()).thenReturn (validProjectConfig );
4770+ ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
4771+ ODPManager mockODPManager = mock (ODPManager .class );
4772+
4773+ Mockito .when (mockODPManager .getEventManager ()).thenReturn (mockODPEventManager );
4774+ Optimizely optimizely = Optimizely .builder ()
4775+ .withConfigManager (mockProjectConfigManager )
4776+ .withODPManager (mockODPManager )
4777+ .build ();
4778+
4779+ verify (mockODPEventManager ).start ();
4780+
4781+ Map <String , String > identifiers = new HashMap <>();
4782+ identifiers .put ("id1" , "value1" );
4783+ identifiers .put ("id2" , "value2" );
4784+
4785+ Map <String , Object > data = new HashMap <>();
4786+ data .put ("sdk" , "java" );
4787+ data .put ("revision" , 52 );
4788+
4789+ optimizely .sendODPEvent ("fullstack" , null , identifiers , data );
4790+ logbackVerifier .expectMessage (Level .ERROR , "ODP action is not valid (cannot be empty)." );
4791+ }
4792+
4793+ @ Test
4794+ public void sendODPEventErrorEmptyAction () {
4795+ ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
4796+ Mockito .when (mockProjectConfigManager .getConfig ()).thenReturn (validProjectConfig );
4797+ ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
4798+ ODPManager mockODPManager = mock (ODPManager .class );
4799+
4800+ Mockito .when (mockODPManager .getEventManager ()).thenReturn (mockODPEventManager );
4801+ Optimizely optimizely = Optimizely .builder ()
4802+ .withConfigManager (mockProjectConfigManager )
4803+ .withODPManager (mockODPManager )
4804+ .build ();
4805+
4806+ verify (mockODPEventManager ).start ();
4807+
4808+ Map <String , String > identifiers = new HashMap <>();
4809+ identifiers .put ("id1" , "value1" );
4810+ identifiers .put ("id2" , "value2" );
4811+
4812+ Map <String , Object > data = new HashMap <>();
4813+ data .put ("sdk" , "java" );
4814+ data .put ("revision" , 52 );
4815+
4816+ optimizely .sendODPEvent ("fullstack" , "" , identifiers , data );
4817+ logbackVerifier .expectMessage (Level .ERROR , "ODP action is not valid (cannot be empty)." );
4818+ }
4819+
4820+ @ Test
4821+ @ SuppressFBWarnings (value = "NP_NONNULL_PARAM_VIOLATION" , justification = "Testing nullness contract violation" )
4822+ public void sendODPEventNullType () {
4823+ ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
4824+ Mockito .when (mockProjectConfigManager .getConfig ()).thenReturn (validProjectConfig );
4825+ ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
4826+ ODPManager mockODPManager = mock (ODPManager .class );
4827+
4828+ Mockito .when (mockODPManager .getEventManager ()).thenReturn (mockODPEventManager );
4829+ Optimizely optimizely = Optimizely .builder ()
4830+ .withConfigManager (mockProjectConfigManager )
4831+ .withODPManager (mockODPManager )
4832+ .build ();
4833+
4834+ verify (mockODPEventManager ).start ();
4835+
4836+ Map <String , String > identifiers = new HashMap <>();
4837+ identifiers .put ("id1" , "value1" );
4838+ identifiers .put ("id2" , "value2" );
4839+
4840+ Map <String , Object > data = new HashMap <>();
4841+ data .put ("sdk" , "java" );
4842+ data .put ("revision" , 52 );
4843+
4844+ optimizely .sendODPEvent (null , "identify" , identifiers , data );
4845+ ArgumentCaptor <ODPEvent > eventArgument = ArgumentCaptor .forClass (ODPEvent .class );
4846+ verify (mockODPEventManager ).sendEvent (eventArgument .capture ());
4847+
4848+ assertEquals ("fullstack" , eventArgument .getValue ().getType ());
4849+ assertEquals ("identify" , eventArgument .getValue ().getAction ());
4850+ assertEquals (identifiers , eventArgument .getValue ().getIdentifiers ());
4851+ assertEquals (data , eventArgument .getValue ().getData ());
4852+ }
4853+
4854+ @ Test
4855+ public void sendODPEventEmptyType () {
4856+ ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
4857+ Mockito .when (mockProjectConfigManager .getConfig ()).thenReturn (validProjectConfig );
4858+ ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
4859+ ODPManager mockODPManager = mock (ODPManager .class );
4860+
4861+ Mockito .when (mockODPManager .getEventManager ()).thenReturn (mockODPEventManager );
4862+ Optimizely optimizely = Optimizely .builder ()
4863+ .withConfigManager (mockProjectConfigManager )
4864+ .withODPManager (mockODPManager )
4865+ .build ();
4866+
4867+ verify (mockODPEventManager ).start ();
4868+
4869+ Map <String , String > identifiers = new HashMap <>();
4870+ identifiers .put ("id1" , "value1" );
4871+ identifiers .put ("id2" , "value2" );
4872+
4873+ Map <String , Object > data = new HashMap <>();
4874+ data .put ("sdk" , "java" );
4875+ data .put ("revision" , 52 );
4876+
4877+ optimizely .sendODPEvent ("" , "identify" , identifiers , data );
4878+ ArgumentCaptor <ODPEvent > eventArgument = ArgumentCaptor .forClass (ODPEvent .class );
4879+ verify (mockODPEventManager ).sendEvent (eventArgument .capture ());
4880+
4881+ assertEquals ("fullstack" , eventArgument .getValue ().getType ());
4882+ assertEquals ("identify" , eventArgument .getValue ().getAction ());
4883+ assertEquals (identifiers , eventArgument .getValue ().getIdentifiers ());
4884+ assertEquals (data , eventArgument .getValue ().getData ());
4885+ }
4886+
47654887 @ Test
47664888 public void sendODPEventError () {
47674889 ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
0 commit comments