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