@@ -87,7 +87,7 @@ public class MainOneSignalClassRunner {
87
87
private static JSONObject lastGetTags ;
88
88
private ActivityController <BlankActivity > blankActivityController ;
89
89
90
- public static void GetIdsAvailable () {
90
+ private static void GetIdsAvailable () {
91
91
OneSignal .idsAvailable (new OneSignal .IdsAvailableHandler () {
92
92
@ Override
93
93
public void idsAvailable (String userId , String registrationId ) {
@@ -97,6 +97,15 @@ public void idsAvailable(String userId, String registrationId) {
97
97
});
98
98
}
99
99
100
+ private static void GetTags () {
101
+ OneSignal .getTags (new OneSignal .GetTagsHandler () {
102
+ @ Override
103
+ public void tagsAvailable (JSONObject tags ) {
104
+ lastGetTags = tags ;
105
+ }
106
+ });
107
+ }
108
+
100
109
@ BeforeClass // Runs only once, before any tests
101
110
public static void setUpClass () throws Exception {
102
111
ShadowLog .stream = System .out ;
@@ -115,6 +124,7 @@ public void beforeEachTest() throws Exception {
115
124
blankActivityController = Robolectric .buildActivity (BlankActivity .class ).create ();
116
125
blankActivity = blankActivityController .get ();
117
126
127
+ ShadowOneSignalRestClient .nextSuccessResponse = null ;
118
128
ShadowOneSignalRestClient .failNext = false ;
119
129
ShadowOneSignalRestClient .failAll = false ;
120
130
ShadowOneSignalRestClient .interruptibleDelayNext = false ;
@@ -556,12 +566,7 @@ public void shouldSendTagsWithRequestBatching() throws Exception {
556
566
OneSignal .sendTags (new JSONObject ("{\" test1\" : \" value1\" }" ));
557
567
OneSignal .sendTags (new JSONObject ("{\" test2\" : \" value2\" }" ));
558
568
559
- OneSignal .getTags (new OneSignal .GetTagsHandler () {
560
- @ Override
561
- public void tagsAvailable (JSONObject tags ) {
562
- lastGetTags = tags ;
563
- }
564
- });
569
+ GetTags ();
565
570
threadAndTaskWait ();
566
571
threadAndTaskWait ();
567
572
@@ -583,14 +588,8 @@ public void testOldIntValues() throws Exception {
583
588
584
589
OneSignal .deleteTag ("int" );
585
590
threadAndTaskWait ();
586
-
587
- lastGetTags = null ;
588
- OneSignal .getTags (new OneSignal .GetTagsHandler () {
589
- @ Override
590
- public void tagsAvailable (JSONObject tags ) {
591
- lastGetTags = tags ;
592
- }
593
- });
591
+
592
+ GetTags ();
594
593
595
594
final SharedPreferences prefs2 = blankActivity .getSharedPreferences (OneSignal .class .getSimpleName (), Context .MODE_PRIVATE );
596
595
Assert .assertNull (lastGetTags );
@@ -600,12 +599,7 @@ public void tagsAvailable(JSONObject tags) {
600
599
public void testSendTagNonStringValues () throws Exception {
601
600
OneSignalInit ();
602
601
OneSignal .sendTags ("{\" int\" : 122, \" bool\" : true, \" null\" : null, \" array\" : [123], \" object\" : {}}" );
603
- OneSignal .getTags (new OneSignal .GetTagsHandler () {
604
- @ Override
605
- public void tagsAvailable (JSONObject tags ) {
606
- lastGetTags = tags ;
607
- }
608
- });
602
+ GetTags ();
609
603
610
604
Assert .assertEquals (String .class , lastGetTags .get ("int" ).getClass ());
611
605
Assert .assertEquals ("122" , lastGetTags .get ("int" ));
@@ -663,6 +657,7 @@ public void shouldNotCrashIfOnTaskRemovedIsCalledBeforeInitIsDone() {
663
657
664
658
@ Test
665
659
public void testMethodCallsBeforeInit () throws Exception {
660
+ GetTags ();
666
661
OneSignal .sendTag ("key" , "value" );
667
662
OneSignal .sendTags ("{\" key\" : \" value\" }" );
668
663
OneSignal .deleteTag ("key" );
@@ -690,12 +685,7 @@ public void testDeleteTags() throws Exception {
690
685
OneSignalInit ();
691
686
OneSignal .sendTags ("{\" str\" : \" str1\" , \" int\" : 122, \" bool\" : true}" );
692
687
OneSignal .deleteTag ("int" );
693
- OneSignal .getTags (new OneSignal .GetTagsHandler () {
694
- @ Override
695
- public void tagsAvailable (JSONObject tags ) {
696
- lastGetTags = tags ;
697
- }
698
- });
688
+ GetTags ();
699
689
700
690
Assert .assertFalse (lastGetTags .has ("int" ));
701
691
lastGetTags = null ;
@@ -707,12 +697,7 @@ public void tagsAvailable(JSONObject tags) {
707
697
708
698
OneSignal .deleteTag ("int" );
709
699
710
- OneSignal .getTags (new OneSignal .GetTagsHandler () {
711
- @ Override
712
- public void tagsAvailable (JSONObject tags ) {
713
- lastGetTags = tags ;
714
- }
715
- });
700
+ GetTags ();
716
701
717
702
Assert .assertFalse (lastGetTags .has ("int" ));
718
703
@@ -724,6 +709,29 @@ public void tagsAvailable(JSONObject tags) {
724
709
Assert .assertFalse (new JSONObject (syncValues ).has ("tags" ));
725
710
}
726
711
712
+
713
+ @ Test
714
+ public void testDeleteTagsAfterSync () throws Exception {
715
+ OneSignalInit ();
716
+ OneSignal .sendTags ("{\" foo\" : \" bar\" , \" fuz\" : \" baz\" }" );
717
+ threadAndTaskWait ();
718
+ Assert .assertEquals ("bar" , ShadowOneSignalRestClient .lastPost .getJSONObject ("tags" ).get ("foo" ));
719
+ Assert .assertEquals ("baz" , ShadowOneSignalRestClient .lastPost .getJSONObject ("tags" ).get ("fuz" ));
720
+
721
+ OneSignal .deleteTags ("[\" foo\" , \" fuz\" ]" );
722
+ threadAndTaskWait ();
723
+ Assert .assertEquals ("" , ShadowOneSignalRestClient .lastPost .getJSONObject ("tags" ).get ("foo" ));
724
+ Assert .assertEquals ("" , ShadowOneSignalRestClient .lastPost .getJSONObject ("tags" ).get ("fuz" ));
725
+
726
+ GetTags ();
727
+
728
+ Assert .assertNull (lastGetTags );
729
+
730
+ final SharedPreferences prefs = blankActivity .getSharedPreferences (OneSignal .class .getSimpleName (), Context .MODE_PRIVATE );
731
+ JSONObject syncValues = new JSONObject (prefs .getString ("ONESIGNAL_USERSTATE_SYNCVALYES_CURRENT_STATE" , null ));
732
+ Assert .assertFalse (syncValues .has ("tags" ));
733
+ }
734
+
727
735
@ Test
728
736
public void testOmitDeletesOfNonExistingKeys () throws Exception {
729
737
OneSignalInit ();
@@ -738,12 +746,7 @@ public void testOmitDeletesOfNonExistingKeys() throws Exception {
738
746
@ Test
739
747
public void testGetTagsWithNoTagsShouldBeNull () throws Exception {
740
748
OneSignalInit ();
741
- OneSignal .getTags (new OneSignal .GetTagsHandler () {
742
- @ Override
743
- public void tagsAvailable (JSONObject tags ) {
744
- lastGetTags = tags ;
745
- }
746
- });
749
+ GetTags ();
747
750
748
751
Assert .assertNull (lastGetTags );
749
752
}
@@ -753,12 +756,7 @@ public void shouldGetTags() throws Exception {
753
756
OneSignalInit ();
754
757
OneSignal .sendTags (new JSONObject ("{\" test1\" : \" value1\" , \" test2\" : \" value2\" }" ));
755
758
threadAndTaskWait ();
756
- OneSignal .getTags (new OneSignal .GetTagsHandler () {
757
- @ Override
758
- public void tagsAvailable (JSONObject tags ) {
759
- lastGetTags = tags ;
760
- }
761
- });
759
+ GetTags ();
762
760
763
761
Assert .assertEquals ("value1" , lastGetTags .getString ("test1" ));
764
762
Assert .assertEquals ("value2" , lastGetTags .getString ("test2" ));
@@ -867,14 +865,48 @@ public void testLocationTimeout() throws Exception {
867
865
Assert .assertFalse (ShadowOneSignal .messages .contains ("GoogleApiClient timedout" ));
868
866
}
869
867
868
+ // ####### Unit test postNotification #####
869
+
870
+ private static JSONObject postNotificationSuccess = null , postNotificationFailure = null ;
871
+
872
+ @ Test
873
+ public void testPostNotification () throws Exception {
874
+ OneSignalInit ();
875
+
876
+ OneSignal .PostNotificationResponseHandler handler = new OneSignal .PostNotificationResponseHandler () {
877
+ @ Override
878
+ public void onSuccess (JSONObject response ) {
879
+ postNotificationSuccess = response ;
880
+ }
881
+
882
+ @ Override
883
+ public void onFailure (JSONObject response ) {
884
+ postNotificationFailure = response ;
885
+ }
886
+ };
887
+
888
+ // Not testing input here, just that HTTP 200 fires a success.
889
+ OneSignal .postNotification ("{}" , handler );
890
+ threadAndTaskWait ();
891
+ Assert .assertNotNull (postNotificationSuccess );
892
+ Assert .assertNull (postNotificationFailure );
893
+ postNotificationSuccess = postNotificationFailure = null ;
894
+
895
+
896
+ ShadowOneSignalRestClient .nextSuccessResponse = "{\" id\" :\" \" ,\" recipients\" :0,\" errors\" :[\" All included players are not subscribed\" ]}" ;
897
+ OneSignal .postNotification ("{}" , handler );
898
+ Assert .assertNull (postNotificationSuccess );
899
+ Assert .assertNotNull (postNotificationFailure );
900
+ }
901
+
870
902
// ####### Unit test helper methods ########
871
903
872
904
private static void threadWait () {
873
905
try {Thread .sleep (1000 );} catch (Throwable t ) {}
874
906
}
875
907
876
908
private void threadAndTaskWait () {
877
- try {Thread .sleep (300 );} catch (Throwable t ) {}
909
+ try {Thread .sleep (10 );} catch (Throwable t ) {}
878
910
OneSignalPackagePrivateHelper .runAllNetworkRunnables ();
879
911
OneSignalPackagePrivateHelper .runFocusRunnables ();
880
912
0 commit comments