Adds support for localized push notification in push payload (#4129)
* Adds support for localized push data keys - passign alert-[lang|locale] or title-[lang|locale] will inject the proper locale on the push body based on the installation * Better handling of the default cases * Updates changelog * nits * nits
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
var PushWorker = require('../src').PushWorker;
|
||||
var PushUtils = require('../src/Push/utils');
|
||||
var Config = require('../src/Config');
|
||||
|
||||
describe('PushWorker', () => {
|
||||
@@ -54,4 +55,105 @@ describe('PushWorker', () => {
|
||||
jfail(err);
|
||||
})
|
||||
});
|
||||
|
||||
describe('localized push', () => {
|
||||
it('should return locales', () => {
|
||||
const locales = PushUtils.getLocalesFromPush({
|
||||
data: {
|
||||
'alert-fr': 'french',
|
||||
'alert': 'Yo!',
|
||||
'alert-en-US': 'English',
|
||||
}
|
||||
});
|
||||
expect(locales).toEqual(['fr', 'en-US']);
|
||||
});
|
||||
|
||||
it('should return and empty array if no locale is set', () => {
|
||||
const locales = PushUtils.getLocalesFromPush({
|
||||
data: {
|
||||
'alert': 'Yo!',
|
||||
}
|
||||
});
|
||||
expect(locales).toEqual([]);
|
||||
});
|
||||
|
||||
it('should deduplicate locales', () => {
|
||||
const locales = PushUtils.getLocalesFromPush({
|
||||
data: {
|
||||
'alert': 'Yo!',
|
||||
'alert-fr': 'french',
|
||||
'title-fr': 'french'
|
||||
}
|
||||
});
|
||||
expect(locales).toEqual(['fr']);
|
||||
});
|
||||
|
||||
it('transforms body appropriately', () => {
|
||||
const cleanBody = PushUtils.transformPushBodyForLocale({
|
||||
data: {
|
||||
alert: 'Yo!',
|
||||
'alert-fr': 'frenchy!',
|
||||
'alert-en': 'english',
|
||||
}
|
||||
}, 'fr');
|
||||
expect(cleanBody).toEqual({
|
||||
data: {
|
||||
alert: 'frenchy!'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('transforms body appropriately', () => {
|
||||
const cleanBody = PushUtils.transformPushBodyForLocale({
|
||||
data: {
|
||||
alert: 'Yo!',
|
||||
'alert-fr': 'frenchy!',
|
||||
'alert-en': 'english',
|
||||
'title-fr': 'french title'
|
||||
}
|
||||
}, 'fr');
|
||||
expect(cleanBody).toEqual({
|
||||
data: {
|
||||
alert: 'frenchy!',
|
||||
title: 'french title'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('maps body on all provided locales', () => {
|
||||
const bodies = PushUtils.bodiesPerLocales({
|
||||
data: {
|
||||
alert: 'Yo!',
|
||||
'alert-fr': 'frenchy!',
|
||||
'alert-en': 'english',
|
||||
'title-fr': 'french title'
|
||||
}
|
||||
}, ['fr', 'en']);
|
||||
expect(bodies).toEqual({
|
||||
fr: {
|
||||
data: {
|
||||
alert: 'frenchy!',
|
||||
title: 'french title'
|
||||
}
|
||||
},
|
||||
en: {
|
||||
data: {
|
||||
alert: 'english',
|
||||
}
|
||||
},
|
||||
default: {
|
||||
data: {
|
||||
alert: 'Yo!'
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('should properly handle default cases', () => {
|
||||
expect(PushUtils.transformPushBodyForLocale({})).toEqual({});
|
||||
expect(PushUtils.stripLocalesFromBody({})).toEqual({});
|
||||
expect(PushUtils.bodiesPerLocales({where: {}})).toEqual({default: {where: {}}});
|
||||
expect(PushUtils.groupByLocaleIdentifier([])).toEqual({default: []});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user