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,55 @@ 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+ // Given a list of unsent requests
213+ // we want to get the list of strings to send
214+ // We should get back the correct list of requests to send
215+ @ Test
216+ public void testJsonEncodeUnsentRequests () {
217+ List <Map <String , Object >> requests = mockRequests (4 );
218+
219+ Request realRequest = new Request ("POST" , Constants .Methods .START , null );
220+ Request request = spy (realRequest );
221+ when (request .getUnsentRequests ()).thenReturn (requests );
222+
223+ Request .RequestsWithEncoding requestsWithEncoding = request .getRequestsWithEncodedStringStoredRequests ();
224+
225+ assertEquals (4 , requestsWithEncoding .unsentRequests .size ());
226+ assertEquals (4 , requestsWithEncoding .requestsToSend .size ());
227+ final String expectedJson = "{\" data\" :[{\" 0\" :\" testData\" },{\" 1\" :\" testData\" },{\" 2\" :\" testData\" },{\" 3\" :\" testData\" }]}" ;
228+ assertEquals (expectedJson , requestsWithEncoding .jsonEncodedString );
229+ }
230+
231+ // Given a list of requests
232+ // we want to encode to a JSON String
233+ // The String should have the expected format
234+ @ Test
235+ public void testGetRequestsWithEncodedStringStoredRequests () {
236+ List <Map <String , Object >> requests = mockRequests (4 );
237+ String json = Request .jsonEncodeUnsentRequests (requests );
238+
239+ final String expectedJson = "{\" data\" :[{\" 0\" :\" testData\" },{\" 1\" :\" testData\" },{\" 2\" :\" testData\" },{\" 3\" :\" testData\" }]}" ;
240+ assertEquals (json , expectedJson );
241+ }
242+
243+ private List <Map <String , Object >> mockRequests (int requestSize ) {
244+ List <Map <String , Object >> requests = new ArrayList <>();
245+
246+ for (int i =0 ; i < requestSize ; i ++) {
247+ Map <String , Object > request = new HashMap <String , Object >();
248+ request .put (Integer .toString (i ), "testData" );
249+ requests .add (request );
250+ }
251+ return requests ;
252+ }
253+
209254}
0 commit comments