Skip to content

Commit 7a072b5

Browse files
Lp 10446 start call back variable call back (#356)
* fix for no network response * tests added * review update * fix
1 parent 0b25b8c commit 7a072b5

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

AndroidSDKCore/src/main/java/com/leanplum/Leanplum.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -740,9 +740,9 @@ private static void handleApiResponse(JSONObject response, List<Map<String, Obje
740740
if (!LeanplumInternal.hasStarted()) {
741741
// Set start response to null.
742742
request.onApiResponse(null);
743-
Leanplum.handleStartResponse(lastStartResponse);
744743
}
745744
}
745+
Leanplum.handleStartResponse(lastStartResponse);
746746
}
747747

748748
@VisibleForTesting

AndroidSDKTests/src/test/java/com/leanplum/LeanplumTest.java

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1671,4 +1671,69 @@ public void variablesChanged() {
16711671

16721672
assertEquals(4, VarCache.variants().size());
16731673
}
1674+
1675+
@Test
1676+
public void testStartChangeCallBackForOffline() throws Exception {
1677+
final Semaphore semaphore = new Semaphore(1);
1678+
semaphore.acquire();
1679+
1680+
//Offline Mode.
1681+
ResponseHelper.seedResponseNull();
1682+
1683+
// Expected request params.
1684+
final HashMap<String, Object> expectedRequestParams = CollectionUtil.newHashMap(
1685+
"city", "(detect)",
1686+
"country", "(detect)",
1687+
"location", "(detect)",
1688+
"region", "(detect)",
1689+
"locale", "en_US"
1690+
);
1691+
1692+
// Validate request.
1693+
// Validate request.
1694+
RequestHelper.addRequestHandler(new RequestHelper.RequestHandler() {
1695+
@Override
1696+
public void onRequest(String httpMethod, String apiMethod, Map<String, Object> params) {
1697+
assertEquals(Constants.Methods.START, apiMethod);
1698+
assertTrue(params.keySet().containsAll(expectedRequestParams.keySet()));
1699+
assertTrue(params.values().containsAll(expectedRequestParams.values()));
1700+
}
1701+
});
1702+
1703+
1704+
Leanplum.start(mContext, new StartCallback() {
1705+
@Override
1706+
public void onResponse(boolean success) {
1707+
assertTrue(success);
1708+
semaphore.release();
1709+
}
1710+
});
1711+
assertTrue(Leanplum.hasStarted());
1712+
1713+
}
1714+
1715+
@Test
1716+
public void testVariableChangeCallBacksForOffline() throws Exception {
1717+
final Semaphore semaphore = new Semaphore(1);
1718+
1719+
semaphore.acquire();
1720+
1721+
// Seed getVars response.
1722+
ResponseHelper.seedResponseNull();
1723+
1724+
RequestHelper.addRequestHandler(new RequestHelper.RequestHandler() {
1725+
@Override
1726+
public void onRequest(String httpMethod, String apiMethod, Map<String, Object> params) {
1727+
assertEquals(Constants.Methods.GET_VARS, apiMethod);
1728+
}
1729+
});
1730+
1731+
Leanplum.forceContentUpdate(new VariablesChangedCallback() {
1732+
@Override
1733+
public void variablesChanged() {
1734+
semaphore.release();
1735+
}
1736+
});
1737+
1738+
}
16741739
}

AndroidSDKTests/src/test/java/com/leanplum/_whitebox/utilities/ResponseHelper.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,18 @@ public static void seedResponse(String filename) {
7474
Log.e("ResponseHelper", "Unable to seed response from file: " + filename);
7575
}
7676
}
77+
78+
/**
79+
* Seeds the Null response to Util.getResponse method.
80+
*
81+
*/
82+
83+
84+
public static void seedResponseNull() {
85+
try {
86+
doReturn(false).when(Util.class, Util.isConnected());
87+
} catch (Exception e) {
88+
Log.e("ResponseHelper", "Unable to seed response from file: ");
89+
}
90+
}
7791
}

0 commit comments

Comments
 (0)