@@ -141,6 +141,87 @@ describe('ParsePushAdapter', () => {
141141 done ( ) ;
142142 } ) ;
143143
144+ it ( 'can send push notifications by pushType and failback by deviceType' , ( done ) => {
145+ var parsePushAdapter = new ParsePushAdapter ( ) ;
146+ // Mock android ios senders
147+ var androidSender = {
148+ send : jasmine . createSpy ( 'send' )
149+ } ;
150+ var iosSender = {
151+ send : jasmine . createSpy ( 'send' )
152+ } ;
153+ var senderMap = {
154+ ios : iosSender ,
155+ android : androidSender
156+ } ;
157+ parsePushAdapter . senderMap = senderMap ;
158+ // Mock installations
159+ var installations = [
160+ {
161+ deviceType : 'android' ,
162+ deviceToken : 'androidToken'
163+ } ,
164+ {
165+ deviceType : 'android' ,
166+ pushType : 'gcm' ,
167+ deviceToken : 'androidToken'
168+ } ,
169+ {
170+ deviceType : 'android' ,
171+ pushType : 'ppns' ,
172+ deviceToken : 'androidToken'
173+ } ,
174+ {
175+ deviceType : 'android' ,
176+ pushType : 'none' ,
177+ deviceToken : 'androidToken'
178+ } ,
179+ {
180+ deviceType : 'ios' ,
181+ deviceToken : 'iosToken'
182+ } ,
183+ {
184+ deviceType : 'ios' ,
185+ pushType : 'ios' ,
186+ deviceToken : 'iosToken'
187+ } ,
188+ {
189+ deviceType : 'win' ,
190+ deviceToken : 'winToken'
191+ } ,
192+ {
193+ deviceType : 'win' ,
194+ deviceToken : 'winToken'
195+ } ,
196+ {
197+ deviceType : 'android' ,
198+ deviceToken : undefined
199+ }
200+ ] ;
201+ var data = { } ;
202+
203+ parsePushAdapter . send ( data , installations ) ;
204+ // Check android sender
205+ expect ( androidSender . send ) . toHaveBeenCalled ( ) ;
206+ var args = androidSender . send . calls . first ( ) . args ;
207+ expect ( args [ 0 ] ) . toEqual ( data ) ;
208+ expect ( args [ 1 ] ) . toEqual ( [
209+ makeDevice ( 'androidToken' ) ,
210+ makeDevice ( 'androidToken' ) ,
211+ makeDevice ( 'androidToken' ) ,
212+ makeDevice ( 'androidToken' )
213+ ] ) ;
214+ // Check ios sender
215+ expect ( iosSender . send ) . toHaveBeenCalled ( ) ;
216+ args = iosSender . send . calls . first ( ) . args ;
217+ expect ( args [ 0 ] ) . toEqual ( data ) ;
218+ expect ( args [ 1 ] ) . toEqual ( [
219+ makeDevice ( 'iosToken' ) ,
220+ makeDevice ( 'iosToken' )
221+ ] ) ;
222+ done ( ) ;
223+ } ) ;
224+
144225 it ( 'reports properly results' , ( done ) => {
145226 var pushConfig = {
146227 android : {
0 commit comments