|
17 | 17 | import java8.util.concurrent.CompletionException; |
18 | 18 | import okhttp3.OkHttpClient; |
19 | 19 | import org.junit.Test; |
| 20 | +import java.util.concurrent.atomic.AtomicReference; |
20 | 21 |
|
21 | 22 | public class FlatFeedTest { |
22 | 23 | private static final String apiKey = |
@@ -161,4 +162,62 @@ public void testGetActivitiesWithRequestOptions() throws Exception { |
161 | 162 | ).join(); |
162 | 163 | assert result3 != null; |
163 | 164 | } |
| 165 | + |
| 166 | + @Test |
| 167 | + public void testGetActivitiesUrlParameters() throws Exception { |
| 168 | + // Create a mock HTTP client that captures the request URL |
| 169 | + AtomicReference<String> capturedUrl = new AtomicReference<>(); |
| 170 | + |
| 171 | + // Create a custom OkHttpClient that intercepts requests |
| 172 | + OkHttpClient mockClient = new OkHttpClient.Builder() |
| 173 | + .addInterceptor(chain -> { |
| 174 | + capturedUrl.set(chain.request().url().toString()); |
| 175 | + // Return a mock response |
| 176 | + return new okhttp3.Response.Builder() |
| 177 | + .request(chain.request()) |
| 178 | + .protocol(okhttp3.Protocol.HTTP_1_1) |
| 179 | + .code(200) |
| 180 | + .message("OK") |
| 181 | + .body(okhttp3.ResponseBody.create( |
| 182 | + okhttp3.MediaType.parse("application/json"), |
| 183 | + "{\"results\":[],\"next\":\"\",\"duration\":\"0ms\"}" |
| 184 | + )) |
| 185 | + .build(); |
| 186 | + }) |
| 187 | + .build(); |
| 188 | + |
| 189 | + Client client = Client.builder("test-key", "test-secret") |
| 190 | + .httpClient(new OKHTTPClientAdapter(mockClient)) |
| 191 | + .build(); |
| 192 | + |
| 193 | + FlatFeed feed = client.flatFeed("flat", "test-url-params"); |
| 194 | + |
| 195 | + // Test with multiple RequestOptions |
| 196 | + feed.getActivities( |
| 197 | + new Limit(20), |
| 198 | + new Offset(5), |
| 199 | + new Filter().refresh(), |
| 200 | + new DiscardActors("actor1", "actor2", "actor3") |
| 201 | + ).join(); |
| 202 | + |
| 203 | + String url = capturedUrl.get(); |
| 204 | + assert url != null; |
| 205 | + |
| 206 | + // Verify URL contains expected parameters |
| 207 | + assert url.contains("limit=20") : "URL should contain limit=20, got: " + url; |
| 208 | + assert url.contains("offset=5") : "URL should contain offset=5, got: " + url; |
| 209 | + assert url.contains("refresh=1") : "URL should contain refresh=1, got: " + url; |
| 210 | + assert url.contains("discard_actors=actor1,actor2,actor3") : "URL should contain discard_actors, got: " + url; |
| 211 | + |
| 212 | + // Test with custom separator |
| 213 | + capturedUrl.set(null); |
| 214 | + feed.getActivities( |
| 215 | + new DiscardActors(new String[]{"actor4", "actor5"}, "|") |
| 216 | + ).join(); |
| 217 | + |
| 218 | + url = capturedUrl.get(); |
| 219 | + assert url != null; |
| 220 | + assert url.contains("discard_actors=actor4%7Cactor5") : "URL should contain pipe-separated actors, got: " + url; |
| 221 | + assert url.contains("discard_actors_sep=%7C") : "URL should contain discard_actors_sep, got: " + url; |
| 222 | + } |
164 | 223 | } |
0 commit comments