Skip to content

Commit e20e048

Browse files
committed
Add setLanguage callback Unit Tests
* Add TestSetLanguageHandler for unit test setLanguage with callback setup * Add shouldSetLanguageWithResponse to check for success callback * Add shouldFailToSetLanguageWithResponse to check for failure callback
1 parent ed749cb commit e20e048

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

OneSignalSDK/unittest/src/test/java/com/test/onesignal/MainOneSignalClassRunner.java

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@
6565
import com.onesignal.OSSubscriptionStateChanges;
6666
import com.onesignal.OneSignal;
6767
import com.onesignal.OneSignal.ChangeTagsUpdateHandler;
68+
import com.onesignal.OneSignal.OSSetLanguageCompletionHandler;
69+
import com.onesignal.OneSignal.OSLanguageError;
6870
import com.onesignal.OneSignalPackagePrivateHelper;
6971
import com.onesignal.OneSignalShadowPackageManager;
7072
import com.onesignal.PermissionsActivity;
@@ -2775,6 +2777,68 @@ public void testSetLanguageOnSession() throws Exception {
27752777
assertEquals("fr", lastRequest.payload.getString("language"));
27762778
}
27772779

2780+
private static class TestSetLanguageHandler implements OSSetLanguageCompletionHandler {
2781+
private AtomicBoolean succeeded = new AtomicBoolean(false);
2782+
private AtomicBoolean failed = new AtomicBoolean(false);
2783+
2784+
@Override
2785+
public void onSuccess(String results) { succeeded.set(true); }
2786+
2787+
@Override
2788+
public void onFailure(OSLanguageError error) { failed.set(true); }
2789+
2790+
boolean getSucceeded() { return succeeded.get(); }
2791+
2792+
boolean getFailed() { return failed.get(); }
2793+
}
2794+
2795+
// Tests to make sure the onSuccess handler works
2796+
@Test
2797+
public void shouldSetLanguageWithResponse() throws Exception {
2798+
OneSignalInit();
2799+
threadAndTaskWait();
2800+
2801+
TestSetLanguageHandler handler = new TestSetLanguageHandler();
2802+
2803+
OneSignal.setLanguage("fr", handler);
2804+
2805+
threadAndTaskWait();
2806+
2807+
assertTrue(handler.getSucceeded());
2808+
2809+
// now test to make sure the handler still fires for a call to
2810+
// setLanguage() that doesn't modify existing language (no JSON delta)
2811+
2812+
handler = new TestSetLanguageHandler();
2813+
2814+
OneSignal.setLanguage("es", handler);
2815+
2816+
threadAndTaskWait();
2817+
2818+
assertTrue(handler.getSucceeded());
2819+
}
2820+
2821+
// Tests to make sure that the onFailure callback works
2822+
@Test
2823+
public void shouldFailToSetLanguageWithResponse() throws Exception {
2824+
TestSetLanguageHandler handler = new TestSetLanguageHandler();
2825+
2826+
OneSignalInit();
2827+
threadAndTaskWait();
2828+
2829+
ShadowOneSignalRestClient.failMethod = "players";
2830+
ShadowOneSignalRestClient.failHttpCode = 403;
2831+
ShadowOneSignalRestClient.setNextFailureJSONResponse(new JSONObject() {{
2832+
put("tags", "error");
2833+
}});
2834+
2835+
// Should fail because players call failed with tags
2836+
OneSignal.setLanguage("fr", handler);
2837+
threadAndTaskWait();
2838+
2839+
assertTrue(handler.getFailed());
2840+
}
2841+
27782842
/**
27792843
* Similar workflow to testLocationPermissionPromptWithPrivacyConsent()
27802844
* We want to provide consent but make sure that session time tracking works properly

0 commit comments

Comments
 (0)