3939
4040import java .lang .reflect .InvocationTargetException ;
4141import java .lang .reflect .Method ;
42+ import java .util .ArrayList ;
4243import java .util .HashMap ;
4344import java .util .List ;
4445import java .util .Map ;
4546
47+ import static org .mockito .Mockito .spy ;
48+ import static org .mockito .Mockito .when ;
49+
4650/**
4751 * @author Ben Marten
4852 */
@@ -89,19 +93,17 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
8993 Method removeIrrelevantBackgroundStartRequests =
9094 Request .class .getDeclaredMethod ("removeIrrelevantBackgroundStartRequests" , List .class );
9195 removeIrrelevantBackgroundStartRequests .setAccessible (true );
92- Method getUnsentRequests = Request .class .getDeclaredMethod ("getUnsentRequests" );
93- getUnsentRequests .setAccessible (true );
9496
9597 // Invoke method with specific test data.
9698 // Expectation: No request returned.
97- List unsentRequests = ( List ) getUnsentRequests . invoke ( Request . class );
99+ List unsentRequests = request . getUnsentRequests ( );
98100 assertNotNull (unsentRequests );
99101 assertEquals (0 , unsentRequests .size ());
100102
101103 // Regular start request.
102104 // Expectation: One request returned.
103105 request .sendEventually ();
104- unsentRequests = ( List ) getUnsentRequests . invoke ( Request . class );
106+ unsentRequests = request . getUnsentRequests ( );
105107 assertNotNull (unsentRequests );
106108 assertEquals (1 , unsentRequests .size ());
107109 Request .deleteSentRequests (unsentRequests .size ());
@@ -116,7 +118,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
116118 put (Constants .Params .BACKGROUND , Boolean .toString (false ));
117119 put ("fg" , "2" );
118120 }}).sendEventually ();
119- unsentRequests = ( List ) getUnsentRequests . invoke ( Request . class );
121+ unsentRequests = request . getUnsentRequests ( );
120122 assertNotNull (unsentRequests );
121123 assertEquals (2 , unsentRequests .size ());
122124 Request .deleteSentRequests (unsentRequests .size ());
@@ -131,7 +133,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
131133 put (Constants .Params .BACKGROUND , Boolean .toString (false ));
132134 put ("fg" , "1" );
133135 }}).sendEventually ();
134- unsentRequests = ( List ) getUnsentRequests . invoke ( Request . class );
136+ unsentRequests = request . getUnsentRequests ( );
135137 List unsentRequestsData =
136138 (List ) removeIrrelevantBackgroundStartRequests .invoke (Request .class , unsentRequests );
137139 assertNotNull (unsentRequestsData );
@@ -153,7 +155,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
153155 put (Constants .Params .BACKGROUND , Boolean .toString (false ));
154156 put ("fg" , "1" );
155157 }}).sendEventually ();
156- unsentRequests = ( List ) getUnsentRequests . invoke ( Request . class );
158+ unsentRequests = request . getUnsentRequests ( );
157159
158160 assertNotNull (unsentRequests );
159161 unsentRequestsData =
@@ -176,7 +178,7 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
176178 put (Constants .Params .BACKGROUND , Boolean .toString (true ));
177179 put ("bg" , "2" );
178180 }}).sendEventually ();
179- unsentRequests = ( List ) getUnsentRequests . invoke ( Request . class );
181+ unsentRequests = request . getUnsentRequests ( );
180182 assertNotNull (unsentRequests );
181183 unsentRequestsData =
182184 (List ) removeIrrelevantBackgroundStartRequests .invoke (Request .class , unsentRequests );
@@ -198,12 +200,48 @@ public void testRemoveIrrelevantBackgroundStartRequests() throws NoSuchMethodExc
198200 put (Constants .Params .BACKGROUND , Boolean .toString (true ));
199201 put ("bg" , "2" );
200202 }}).sendEventually ();
201- unsentRequests = ( List ) getUnsentRequests . invoke ( Request . class );
203+ unsentRequests = request . getUnsentRequests ( );
202204 unsentRequestsData =
203205 (List ) removeIrrelevantBackgroundStartRequests .invoke (Request .class , unsentRequests );
204206 assertNotNull (unsentRequestsData );
205207 assertEquals (3 , unsentRequestsData .size ());
206208 Request .deleteSentRequests (unsentRequests .size ());
207209 LeanplumEventDataManagerTest .setDatabaseToNull ();
208210 }
211+
212+ @ Test
213+ public void testJsonEncodeUnsentRequests () {
214+ List <Map <String , Object >> requests = mockRequests (2 , 2 );
215+
216+ Request realRequest = new Request ("POST" , Constants .Methods .START , null );
217+ Request request = spy (realRequest );
218+ when (request .getUnsentRequests ()).thenReturn (requests );
219+
220+ Request .RequestsWithEncoding requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests ();
221+
222+ assertEquals ("{\" data\" :[{\" 0\" :\" 0\" },{\" 0\" :\" 1\" },{\" 1\" :\" 0\" },{\" 1\" :\" 1\" }]}" , requestsWithEncoding .jsonEncodedString );
223+ }
224+
225+ @ Test
226+ public void testGetRequestsWithEncodedStringStoredRequests () {
227+ List <Map <String , Object >> requests = mockRequests (2 , 2 );
228+ String json = Request .jsonEncodeUnsentRequests (requests );
229+ String expectedJson = "{\" data\" :[{\" 0\" :\" 0\" },{\" 0\" :\" 1\" },{\" 1\" :\" 0\" },{\" 1\" :\" 1\" }]}" ;
230+ assertEquals (json , expectedJson );
231+ }
232+
233+ private List <Map <String , Object >> mockRequests (int listSize , int requestSize ) {
234+ List <Map <String , Object >> requests = new ArrayList <>();
235+
236+ for (int i =0 ; i < listSize ; i ++) {
237+
238+ for (int j =0 ; j < requestSize ; j ++) {
239+ Map <String , Object > request = new HashMap <String , Object >();
240+ request .put (Integer .toString (i ), Integer .toString (j ));
241+ requests .add (request );
242+ }
243+ }
244+ return requests ;
245+ }
246+
209247}
0 commit comments