@@ -4762,6 +4762,128 @@ public void sendODPEvent() {
4762
4762
assertEquals (data , eventArgument .getValue ().getData ());
4763
4763
}
4764
4764
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
+
4765
4887
@ Test
4766
4888
public void sendODPEventError () {
4767
4889
ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
0 commit comments