1
- //todo
1
+
2
+ var OneSignalPushAdapter = require ( '../src/Adapters/Push/OneSignalPushAdapter' ) ;
3
+
4
+ describe ( 'OneSignalPushAdapter' , ( ) => {
5
+ it ( 'can be initialized' , ( done ) => {
6
+ // Make mock config
7
+ var pushConfig = {
8
+ oneSignalAppId :"APP ID" ,
9
+ oneSignalApiKey :"API KEY"
10
+ } ;
11
+
12
+ var oneSignalPushAdapter = new OneSignalPushAdapter ( pushConfig ) ;
13
+
14
+ var senderMap = oneSignalPushAdapter . senderMap ;
15
+
16
+ expect ( senderMap . ios instanceof Function ) . toBe ( true ) ;
17
+ expect ( senderMap . android instanceof Function ) . toBe ( true ) ;
18
+ done ( ) ;
19
+ } ) ;
20
+
21
+ it ( 'can get valid push types' , ( done ) => {
22
+ var oneSignalPushAdapter = new OneSignalPushAdapter ( ) ;
23
+
24
+ expect ( oneSignalPushAdapter . getValidPushTypes ( ) ) . toEqual ( [ 'ios' , 'android' ] ) ;
25
+ done ( ) ;
26
+ } ) ;
27
+
28
+ it ( 'can classify installation' , ( done ) => {
29
+ // Mock installations
30
+ var validPushTypes = [ 'ios' , 'android' ] ;
31
+ var installations = [
32
+ {
33
+ deviceType : 'android' ,
34
+ deviceToken : 'androidToken'
35
+ } ,
36
+ {
37
+ deviceType : 'ios' ,
38
+ deviceToken : 'iosToken'
39
+ } ,
40
+ {
41
+ deviceType : 'win' ,
42
+ deviceToken : 'winToken'
43
+ } ,
44
+ {
45
+ deviceType : 'android' ,
46
+ deviceToken : undefined
47
+ }
48
+ ] ;
49
+
50
+ var deviceMap = OneSignalPushAdapter . classifyInstallation ( installations , validPushTypes ) ;
51
+ expect ( deviceMap [ 'android' ] ) . toEqual ( [ makeDevice ( 'androidToken' ) ] ) ;
52
+ expect ( deviceMap [ 'ios' ] ) . toEqual ( [ makeDevice ( 'iosToken' ) ] ) ;
53
+ expect ( deviceMap [ 'win' ] ) . toBe ( undefined ) ;
54
+ done ( ) ;
55
+ } ) ;
56
+
57
+
58
+ it ( 'can send push notifications' , ( done ) => {
59
+ var oneSignalPushAdapter = new OneSignalPushAdapter ( ) ;
60
+
61
+ // Mock android ios senders
62
+ var androidSender = jasmine . createSpy ( 'send' )
63
+ var iosSender = jasmine . createSpy ( 'send' )
64
+
65
+ var senderMap = {
66
+ ios : iosSender ,
67
+ android : androidSender
68
+ } ;
69
+ oneSignalPushAdapter . senderMap = senderMap ;
70
+
71
+ // Mock installations
72
+ var installations = [
73
+ {
74
+ deviceType : 'android' ,
75
+ deviceToken : 'androidToken'
76
+ } ,
77
+ {
78
+ deviceType : 'ios' ,
79
+ deviceToken : 'iosToken'
80
+ } ,
81
+ {
82
+ deviceType : 'win' ,
83
+ deviceToken : 'winToken'
84
+ } ,
85
+ {
86
+ deviceType : 'android' ,
87
+ deviceToken : undefined
88
+ }
89
+ ] ;
90
+ var data = { } ;
91
+
92
+ oneSignalPushAdapter . send ( data , installations ) ;
93
+ // Check android sender
94
+ expect ( androidSender ) . toHaveBeenCalled ( ) ;
95
+ var args = androidSender . calls . first ( ) . args ;
96
+ expect ( args [ 0 ] ) . toEqual ( data ) ;
97
+ expect ( args [ 1 ] ) . toEqual ( [
98
+ makeDevice ( 'androidToken' )
99
+ ] ) ;
100
+ // Check ios sender
101
+ expect ( iosSender ) . toHaveBeenCalled ( ) ;
102
+ args = iosSender . calls . first ( ) . args ;
103
+ expect ( args [ 0 ] ) . toEqual ( data ) ;
104
+ expect ( args [ 1 ] ) . toEqual ( [
105
+ makeDevice ( 'iosToken' )
106
+ ] ) ;
107
+ done ( ) ;
108
+ } ) ;
109
+
110
+ it ( "can send iOS notifications" , ( done ) => {
111
+ var oneSignalPushAdapter = new OneSignalPushAdapter ( ) ;
112
+ var sendToOneSignal = jasmine . createSpy ( 'sendToOneSignal' ) ;
113
+ oneSignalPushAdapter . sendToOneSignal = sendToOneSignal ;
114
+
115
+ oneSignalPushAdapter . sendToAPNS ( { 'data' :{
116
+ 'badge' : 1 ,
117
+ 'alert' : "Example content" ,
118
+ 'sound' : "Example sound" ,
119
+ 'content-available' : 1 ,
120
+ 'misc-data' : 'Example Data'
121
+ } } , [ { 'deviceToken' :'iosToken1' } , { 'deviceToken' :'iosToken2' } ] )
122
+
123
+ expect ( sendToOneSignal ) . toHaveBeenCalled ( ) ;
124
+ var args = sendToOneSignal . calls . first ( ) . args ;
125
+ expect ( args [ 0 ] ) . toEqual ( {
126
+ 'ios_badgeType' :'SetTo' ,
127
+ 'ios_badgeCount' :1 ,
128
+ 'contents' : { 'en' :'Example content' } ,
129
+ 'ios_sound' : 'Example sound' ,
130
+ 'content_available' :true ,
131
+ 'data' :{ 'misc-data' :'Example Data' } ,
132
+ 'include_ios_tokens' :[ 'iosToken1' , 'iosToken2' ]
133
+ } )
134
+ done ( ) ;
135
+ } ) ;
136
+
137
+ it ( "can send Android notifications" , ( done ) => {
138
+ var oneSignalPushAdapter = new OneSignalPushAdapter ( ) ;
139
+ var sendToOneSignal = jasmine . createSpy ( 'sendToOneSignal' ) ;
140
+ oneSignalPushAdapter . sendToOneSignal = sendToOneSignal ;
141
+
142
+ oneSignalPushAdapter . sendToGCM ( { 'data' :{
143
+ 'title' : 'Example title' ,
144
+ 'alert' : 'Example content' ,
145
+ 'misc-data' : 'Example Data'
146
+ } } , [ { 'deviceToken' :'androidToken1' } , { 'deviceToken' :'androidToken2' } ] )
147
+
148
+ expect ( sendToOneSignal ) . toHaveBeenCalled ( ) ;
149
+ var args = sendToOneSignal . calls . first ( ) . args ;
150
+ expect ( args [ 0 ] ) . toEqual ( {
151
+ 'contents' : { 'en' :'Example content' } ,
152
+ 'title' : { 'en' :'Example title' } ,
153
+ 'data' :{ 'misc-data' :'Example Data' } ,
154
+ 'include_android_reg_ids' : [ 'androidToken1' , 'androidToken2' ]
155
+ } )
156
+ done ( ) ;
157
+ } ) ;
158
+
159
+ it ( "can post the correct data" , ( done ) => {
160
+ var pushConfig = {
161
+ oneSignalAppId :"APP ID" ,
162
+ oneSignalApiKey :"API KEY"
163
+ } ;
164
+ var oneSignalPushAdapter = new OneSignalPushAdapter ( pushConfig ) ;
165
+
166
+ var write = jasmine . createSpy ( 'write' ) ;
167
+ oneSignalPushAdapter . https = {
168
+ 'request' : function ( a , b ) {
169
+ return {
170
+ 'end' :function ( ) { } ,
171
+ 'on' :function ( a , b ) { } ,
172
+ 'write' :write
173
+ }
174
+ }
175
+ } ;
176
+
177
+ var installations = [
178
+ {
179
+ deviceType : 'android' ,
180
+ deviceToken : 'androidToken'
181
+ } ,
182
+ {
183
+ deviceType : 'ios' ,
184
+ deviceToken : 'iosToken'
185
+ } ,
186
+ {
187
+ deviceType : 'win' ,
188
+ deviceToken : 'winToken'
189
+ } ,
190
+ {
191
+ deviceType : 'android' ,
192
+ deviceToken : undefined
193
+ }
194
+ ] ;
195
+
196
+ oneSignalPushAdapter . send ( { 'data' :{
197
+ 'title' : 'Example title' ,
198
+ 'alert' : 'Example content' ,
199
+ 'content-available' :1 ,
200
+ 'misc-data' : 'Example Data'
201
+ } } , installations ) ;
202
+
203
+ expect ( write ) . toHaveBeenCalled ( ) ;
204
+
205
+ // iOS
206
+ args = write . calls . first ( ) . args ;
207
+ expect ( args [ 0 ] ) . toEqual ( JSON . stringify ( {
208
+ 'contents' : { 'en' :'Example content' } ,
209
+ 'content_available' :true ,
210
+ 'data' :{ 'title' :'Example title' , 'misc-data' :'Example Data' } ,
211
+ 'include_ios_tokens' :[ 'iosToken' ] ,
212
+ 'app_id' :'APP ID'
213
+ } ) ) ;
214
+
215
+ // Android
216
+ args = write . calls . mostRecent ( ) . args ;
217
+ expect ( args [ 0 ] ) . toEqual ( JSON . stringify ( {
218
+ 'contents' : { 'en' :'Example content' } ,
219
+ 'title' : { 'en' :'Example title' } ,
220
+ 'data' :{ "content-available" :1 , 'misc-data' :'Example Data' } ,
221
+ 'include_android_reg_ids' :[ 'androidToken' ] ,
222
+ 'app_id' :'APP ID'
223
+ } ) ) ;
224
+
225
+ done ( ) ;
226
+ } ) ;
227
+
228
+ function makeDevice ( deviceToken , appIdentifier ) {
229
+ return {
230
+ deviceToken : deviceToken
231
+ } ;
232
+ }
233
+
234
+ } ) ;
0 commit comments