[tests] Fix various test errors
This commit is contained in:
parent
c229eb6243
commit
8a9033457d
|
@ -1,5 +1,5 @@
|
|||
buildscript {
|
||||
ext.firebaseVersion = '11.8.0'
|
||||
ext.firebaseVersion = '12.0.0'
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
|
|
|
@ -92,6 +92,11 @@ public class RNFirebaseAdMobRewardedVideo implements RewardedVideoAdListener {
|
|||
sendEvent("onAdClosed", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoCompleted() {
|
||||
sendEvent("onAdCompleted", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewardedVideoAdFailedToLoad(int errorCode) {
|
||||
WritableMap payload = RNFirebaseAdMobUtils.errorCodeToMap(errorCode);
|
||||
|
|
|
@ -41,9 +41,9 @@ export default class Invites extends ModuleBase {
|
|||
|
||||
/**
|
||||
* Returns the invitation that triggered application open
|
||||
* @returns {Promise.<Object>}
|
||||
* @returns {Promise.<InvitationOpen>}
|
||||
*/
|
||||
getInitialInvitation(): Promise<string> {
|
||||
getInitialInvitation(): Promise<?InvitationOpen> {
|
||||
return getNativeModule(this).getInitialInvitation();
|
||||
}
|
||||
|
||||
|
@ -65,11 +65,17 @@ export default class Invites extends ModuleBase {
|
|||
|
||||
sendInvitation(invitation: Invitation): Promise<string[]> {
|
||||
if (!(invitation instanceof Invitation)) {
|
||||
throw new Error(
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
`Invites:sendInvitation expects an 'Invitation' but got type ${typeof invitation}`
|
||||
)
|
||||
);
|
||||
}
|
||||
try {
|
||||
return getNativeModule(this).sendInvitation(invitation.build());
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,11 +45,17 @@ export default class Links extends ModuleBase {
|
|||
*/
|
||||
createDynamicLink(link: DynamicLink): Promise<string> {
|
||||
if (!(link instanceof DynamicLink)) {
|
||||
throw new Error(
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
`Links:createDynamicLink expects a 'DynamicLink' but got type ${typeof link}`
|
||||
)
|
||||
);
|
||||
}
|
||||
try {
|
||||
return getNativeModule(this).createDynamicLink(link.build());
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -62,18 +68,24 @@ export default class Links extends ModuleBase {
|
|||
type?: 'SHORT' | 'UNGUESSABLE'
|
||||
): Promise<String> {
|
||||
if (!(link instanceof DynamicLink)) {
|
||||
throw new Error(
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
`Links:createShortDynamicLink expects a 'DynamicLink' but got type ${typeof link}`
|
||||
)
|
||||
);
|
||||
}
|
||||
try {
|
||||
return getNativeModule(this).createShortDynamicLink(link.build(), type);
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the link that triggered application open
|
||||
* @returns {Promise.<String>}
|
||||
*/
|
||||
getInitialLink(): Promise<string> {
|
||||
getInitialLink(): Promise<?string> {
|
||||
return getNativeModule(this).getInitialLink();
|
||||
}
|
||||
|
||||
|
|
|
@ -129,11 +129,17 @@ export default class Messaging extends ModuleBase {
|
|||
|
||||
sendMessage(remoteMessage: RemoteMessage): Promise<void> {
|
||||
if (!(remoteMessage instanceof RemoteMessage)) {
|
||||
throw new Error(
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
`Messaging:sendMessage expects a 'RemoteMessage' but got type ${typeof remoteMessage}`
|
||||
)
|
||||
);
|
||||
}
|
||||
try {
|
||||
return getNativeModule(this).sendMessage(remoteMessage.build());
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
subscribeToTopic(topic: string): void {
|
||||
|
|
|
@ -152,11 +152,17 @@ export default class Notifications extends ModuleBase {
|
|||
*/
|
||||
displayNotification(notification: Notification): Promise<void> {
|
||||
if (!(notification instanceof Notification)) {
|
||||
throw new Error(
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
`Notifications:displayNotification expects a 'Notification' but got type ${typeof notification}`
|
||||
)
|
||||
);
|
||||
}
|
||||
try {
|
||||
return getNativeModule(this).displayNotification(notification.build());
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
getBadge(): Promise<number> {
|
||||
|
@ -285,13 +291,19 @@ export default class Notifications extends ModuleBase {
|
|||
schedule: Schedule
|
||||
): Promise<void> {
|
||||
if (!(notification instanceof Notification)) {
|
||||
throw new Error(
|
||||
return Promise.reject(
|
||||
new Error(
|
||||
`Notifications:scheduleNotification expects a 'Notification' but got type ${typeof notification}`
|
||||
)
|
||||
);
|
||||
}
|
||||
try {
|
||||
const nativeNotification = notification.build();
|
||||
nativeNotification.schedule = schedule;
|
||||
return getNativeModule(this).scheduleNotification(nativeNotification);
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
|
||||
setBadge(badge: number): void {
|
||||
|
|
|
@ -97,8 +97,8 @@ def enableSeparateBuildPerCPUArchitecture = false
|
|||
def enableProguardInReleaseBuilds = false
|
||||
|
||||
android {
|
||||
compileSdkVersion 26
|
||||
buildToolsVersion '26.0.2'
|
||||
compileSdkVersion 27
|
||||
buildToolsVersion '27.0.1'
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.reactnativefirebasedemo"
|
||||
|
@ -140,7 +140,7 @@ android {
|
|||
}
|
||||
}
|
||||
|
||||
project.ext.firebaseVersion = '11.8.0'
|
||||
project.ext.firebaseVersion = '12.0.0'
|
||||
|
||||
dependencies {
|
||||
compile project(':react-native-vector-icons')
|
||||
|
@ -163,7 +163,7 @@ dependencies {
|
|||
compile('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
|
||||
transitive = true
|
||||
}
|
||||
compile "com.android.support:appcompat-v7:26.0.2"
|
||||
compile "com.android.support:appcompat-v7:27.0.1"
|
||||
compile "com.facebook.react:react-native:+" // From node_modules
|
||||
}
|
||||
|
||||
|
|
|
@ -29,8 +29,8 @@ allprojects {
|
|||
|
||||
subprojects {
|
||||
ext {
|
||||
compileSdk = 26
|
||||
buildTools = "26.0.2"
|
||||
compileSdk = 27
|
||||
buildTools = "27.0.1"
|
||||
minSdk = 16
|
||||
targetSdk = 26
|
||||
}
|
||||
|
|
|
@ -7,34 +7,34 @@
|
|||
<key>AD_UNIT_ID_FOR_INTERSTITIAL_TEST</key>
|
||||
<string>ca-app-pub-3940256099942544/4411468910</string>
|
||||
<key>CLIENT_ID</key>
|
||||
<string>17067372085-siujfe334vool17t2mtrmjrsgl81nhd9.apps.googleusercontent.com</string>
|
||||
<string>305229645282-22imndi01abc2p6esgtu1i1m9mqrd0ib.apps.googleusercontent.com</string>
|
||||
<key>REVERSED_CLIENT_ID</key>
|
||||
<string>com.googleusercontent.apps.17067372085-siujfe334vool17t2mtrmjrsgl81nhd9</string>
|
||||
<string>com.googleusercontent.apps.305229645282-22imndi01abc2p6esgtu1i1m9mqrd0ib</string>
|
||||
<key>API_KEY</key>
|
||||
<string>AIzaSyC8ZEruBCvS_6woF8_l07ILy1eXaD6J4vQ</string>
|
||||
<string>AIzaSyAcdVLG5dRzA1ck_fa_xd4Z0cY7cga7S5A</string>
|
||||
<key>GCM_SENDER_ID</key>
|
||||
<string>17067372085</string>
|
||||
<string>305229645282</string>
|
||||
<key>PLIST_VERSION</key>
|
||||
<string>1</string>
|
||||
<key>BUNDLE_ID</key>
|
||||
<string>com.invertase.RNFirebaseTests</string>
|
||||
<string>com.invertase.ReactNativeFirebaseDemo</string>
|
||||
<key>PROJECT_ID</key>
|
||||
<string>rnfirebase</string>
|
||||
<string>rnfirebase-b9ad4</string>
|
||||
<key>STORAGE_BUCKET</key>
|
||||
<string>rnfirebase.appspot.com</string>
|
||||
<string>rnfirebase-b9ad4.appspot.com</string>
|
||||
<key>IS_ADS_ENABLED</key>
|
||||
<true></true>
|
||||
<true/>
|
||||
<key>IS_ANALYTICS_ENABLED</key>
|
||||
<false></false>
|
||||
<false/>
|
||||
<key>IS_APPINVITE_ENABLED</key>
|
||||
<false></false>
|
||||
<false/>
|
||||
<key>IS_GCM_ENABLED</key>
|
||||
<true></true>
|
||||
<true/>
|
||||
<key>IS_SIGNIN_ENABLED</key>
|
||||
<true></true>
|
||||
<true/>
|
||||
<key>GOOGLE_APP_ID</key>
|
||||
<string>1:17067372085:ios:d9ef660bd02cc2f1</string>
|
||||
<string>1:305229645282:ios:7b45748cb1117d2d</string>
|
||||
<key>DATABASE_URL</key>
|
||||
<string>https://rnfirebase-5579a.firebaseio.com</string>
|
||||
<string>https://rnfirebase-b9ad4.firebaseio.com</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -7,41 +7,41 @@ PODS:
|
|||
- BoringSSL/Interface (10.0)
|
||||
- Crashlytics (3.10.1):
|
||||
- Fabric (~> 1.7.5)
|
||||
- Fabric (1.7.5)
|
||||
- Firebase/AdMob (4.10.0):
|
||||
- Fabric (1.7.6)
|
||||
- Firebase/AdMob (4.11.0):
|
||||
- Firebase/Core
|
||||
- Google-Mobile-Ads-SDK (= 7.29.0)
|
||||
- Firebase/Auth (4.10.0):
|
||||
- Firebase/Auth (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseAuth (= 4.4.4)
|
||||
- Firebase/Core (4.10.0):
|
||||
- FirebaseAuth (= 4.5.0)
|
||||
- Firebase/Core (4.11.0):
|
||||
- FirebaseAnalytics (= 4.1.0)
|
||||
- FirebaseCore (= 4.0.16)
|
||||
- Firebase/Crash (4.10.0):
|
||||
- FirebaseCore (= 4.0.18)
|
||||
- Firebase/Crash (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseCrash (= 2.0.2)
|
||||
- Firebase/Database (4.10.0):
|
||||
- Firebase/Database (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseDatabase (= 4.1.5)
|
||||
- Firebase/DynamicLinks (4.10.0):
|
||||
- Firebase/DynamicLinks (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseDynamicLinks (= 2.3.2)
|
||||
- Firebase/Firestore (4.10.0):
|
||||
- Firebase/Firestore (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseFirestore (= 0.10.2)
|
||||
- Firebase/Invites (4.10.0):
|
||||
- FirebaseFirestore (= 0.10.4)
|
||||
- Firebase/Invites (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseInvites (= 2.0.2)
|
||||
- Firebase/Messaging (4.10.0):
|
||||
- Firebase/Messaging (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseMessaging (= 2.1.1)
|
||||
- Firebase/Performance (4.10.0):
|
||||
- Firebase/Performance (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebasePerformance (= 1.1.2)
|
||||
- Firebase/RemoteConfig (4.10.0):
|
||||
- Firebase/RemoteConfig (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseRemoteConfig (= 2.1.2)
|
||||
- Firebase/Storage (4.10.0):
|
||||
- Firebase/Storage (4.11.0):
|
||||
- Firebase/Core
|
||||
- FirebaseStorage (= 2.1.3)
|
||||
- FirebaseABTesting (1.0.0):
|
||||
|
@ -52,11 +52,11 @@ PODS:
|
|||
- FirebaseInstanceID (~> 2.0)
|
||||
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
|
||||
- nanopb (~> 0.3)
|
||||
- FirebaseAuth (4.4.4):
|
||||
- FirebaseAuth (4.5.0):
|
||||
- FirebaseAnalytics (~> 4.1)
|
||||
- GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)
|
||||
- GTMSessionFetcher/Core (~> 1.1)
|
||||
- FirebaseCore (4.0.16):
|
||||
- FirebaseCore (4.0.18):
|
||||
- GoogleToolboxForMac/NSData+zlib (~> 2.1)
|
||||
- FirebaseCrash (2.0.2):
|
||||
- FirebaseAnalytics (~> 4.0)
|
||||
|
@ -70,13 +70,13 @@ PODS:
|
|||
- leveldb-library (~> 1.18)
|
||||
- FirebaseDynamicLinks (2.3.2):
|
||||
- FirebaseAnalytics (~> 4.0)
|
||||
- FirebaseFirestore (0.10.2):
|
||||
- FirebaseFirestore (0.10.4):
|
||||
- FirebaseAnalytics (~> 4.1)
|
||||
- FirebaseCore (~> 4.0)
|
||||
- gRPC-ProtoRPC (~> 1.0)
|
||||
- leveldb-library (~> 1.18)
|
||||
- Protobuf (~> 3.5)
|
||||
- FirebaseInstanceID (2.0.9):
|
||||
- FirebaseInstanceID (2.0.10):
|
||||
- FirebaseCore (~> 4.0)
|
||||
- FirebaseInvites (2.0.2):
|
||||
- FirebaseAnalytics (~> 4.0)
|
||||
|
@ -244,17 +244,17 @@ EXTERNAL SOURCES:
|
|||
SPEC CHECKSUMS:
|
||||
BoringSSL: 32764dbaf5f5888cf51fbaa172a010126b41bcd4
|
||||
Crashlytics: aee1a064cbbf99b32efa3f056a5f458d846bc8ff
|
||||
Fabric: ae7146a5f505ea370a1e44820b4b1dc8890e2890
|
||||
Firebase: c98c8b1fbcbdccd82539a36c2b17a9b1bb0ee798
|
||||
Fabric: f8d42c893bb187326a7968b62abe55c36a987a46
|
||||
Firebase: cc13dfab1038c8b45d7903e01fc690451d6d0b24
|
||||
FirebaseABTesting: d07d0ee833b842d5153549e4c7e2e2cb1c23a3f9
|
||||
FirebaseAnalytics: 3dfae28d4a5e06f86c4fae830efc2ad3fadb19bc
|
||||
FirebaseAuth: d040bb7a9db6dfc29d0e7ec82d48be51352b2581
|
||||
FirebaseCore: eb9e1a56733ff1094ecf3e28af9069c344b25239
|
||||
FirebaseAuth: 147bf340a0706b44ca1753d6b41ebafd9687cfe6
|
||||
FirebaseCore: b981f47e5254cbcfdeb483355300d743f6fcab2c
|
||||
FirebaseCrash: cded0fc566c03651aea606a101bc156085f333ca
|
||||
FirebaseDatabase: 5f0bc6134c5c237cf55f9e1249d406770a75eafd
|
||||
FirebaseDynamicLinks: 38b68641d24e78d0277a9205d988ce22875d5a25
|
||||
FirebaseFirestore: 9423ca756bbf77bfa3cd02fafc8027ae79da625a
|
||||
FirebaseInstanceID: d2058a35e9bebda1b6dd42486b84917bde552a9d
|
||||
FirebaseFirestore: 796df79c29cf8ecf806564f4d347665bdafa6ef0
|
||||
FirebaseInstanceID: 8d20d890d65c917f9f7d9950b6e10a760ad34321
|
||||
FirebaseInvites: ae15e0636f9eb42bdf5c1ef4c8f7bd4a88f9878b
|
||||
FirebaseMessaging: db0e01c52ef7e1f42846431273558107d084ede4
|
||||
FirebasePerformance: 96c831a9eaf8d2ddf8bb37a4a6f6dd1b4bfe929f
|
||||
|
|
|
@ -118,7 +118,7 @@ const invitations = async () => {
|
|||
}
|
||||
};
|
||||
|
||||
invitations();
|
||||
// invitations();
|
||||
|
||||
const config = {
|
||||
apiKey: 'AIzaSyDnVqNhxU0Biit9nCo4RorAh5ulQQwko3E',
|
||||
|
|
|
@ -24,30 +24,25 @@ function linksTests({ describe, it, firebase, tryCatch }) {
|
|||
const socialImageLink = 'test.imageUrl.com';
|
||||
|
||||
it('create long dynamic link with all supported parameters', async () => {
|
||||
const data = {
|
||||
const dynamicLink = new firebase.native.links.DynamicLink(
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidPackageName,
|
||||
androidFallbackLink,
|
||||
androidMinPackageVersionCode,
|
||||
},
|
||||
iosInfo: {
|
||||
iosBundleId,
|
||||
iosFallbackLink,
|
||||
iosCustomScheme,
|
||||
iosIpadFallbackLink,
|
||||
iosIpadBundleId,
|
||||
iosAppStoreId,
|
||||
},
|
||||
socialMetaTagInfo: {
|
||||
socialTitle,
|
||||
socialDescription,
|
||||
socialImageLink,
|
||||
},
|
||||
};
|
||||
dynamicLinkDomain
|
||||
);
|
||||
dynamicLink.android
|
||||
.setPackageName(androidPackageName)
|
||||
.android.setFallbackUrl(androidFallbackLink)
|
||||
.android.setMinimumVersion(androidMinPackageVersionCode)
|
||||
.ios.setBundleId(iosBundleId)
|
||||
.ios.setFallbackUrl(iosFallbackLink)
|
||||
.ios.setCustomScheme(iosCustomScheme)
|
||||
.ios.setIPadFallbackUrl(iosIpadFallbackLink)
|
||||
.ios.setIPadBundleId(iosIpadBundleId)
|
||||
.ios.setAppStoreId(iosAppStoreId)
|
||||
.social.setTitle(socialTitle)
|
||||
.social.setDescriptionText(socialDescription)
|
||||
.social.setImageUrl(socialImageLink);
|
||||
|
||||
const result = await links.createDynamicLink(data);
|
||||
const result = await links.createDynamicLink(dynamicLink);
|
||||
|
||||
const expectedParameters = {
|
||||
sd: socialDescription,
|
||||
|
@ -77,12 +72,12 @@ function linksTests({ describe, it, firebase, tryCatch }) {
|
|||
});
|
||||
|
||||
it('create long dynamic link with minimal parameters', async () => {
|
||||
const data = {
|
||||
const dynamicLink = new firebase.native.links.DynamicLink(
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
};
|
||||
dynamicLinkDomain
|
||||
);
|
||||
|
||||
const result = await links.createDynamicLink(data);
|
||||
const result = await links.createDynamicLink(dynamicLink);
|
||||
|
||||
const url = new URL(result);
|
||||
url.protocol.should.eql('https:');
|
||||
|
@ -91,29 +86,6 @@ function linksTests({ describe, it, firebase, tryCatch }) {
|
|||
params.link.should.eql(link);
|
||||
});
|
||||
|
||||
it('fail to create long dynamic link with empty data object', () =>
|
||||
new Promise((resolve, reject) => {
|
||||
const success = tryCatch(() => {
|
||||
// Assertion
|
||||
reject(new Error('createDynamicLink did not fail.'));
|
||||
}, reject);
|
||||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('No dynamicLinkDomain was specified.');
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
const data = {};
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
||||
it('fail to create long dynamic link without link object', () =>
|
||||
new Promise((resolve, reject) => {
|
||||
const success = tryCatch(() => {
|
||||
|
@ -123,16 +95,18 @@ function linksTests({ describe, it, firebase, tryCatch }) {
|
|||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('No link was specified.');
|
||||
error.message.should.equal(
|
||||
'DynamicLink: Missing required `link` property'
|
||||
);
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
const data = { dynamicLinkDomain };
|
||||
const dynamicLink = new firebase.native.links.DynamicLink();
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.createDynamicLink(dynamicLink)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
@ -146,37 +120,34 @@ function linksTests({ describe, it, firebase, tryCatch }) {
|
|||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('No iosBundleId was specified.');
|
||||
error.message.should.equal(
|
||||
'IOSParameters: Missing required `bundleId` property'
|
||||
);
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
// Setup
|
||||
const data = {
|
||||
const dynamicLink = new firebase.native.links.DynamicLink(
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidPackageName,
|
||||
androidFallbackLink,
|
||||
androidMinPackageVersionCode,
|
||||
},
|
||||
iosInfo: {
|
||||
iosFallbackLink,
|
||||
iosCustomScheme,
|
||||
iosIpadFallbackLink,
|
||||
iosIpadBundleId,
|
||||
iosAppStoreId,
|
||||
},
|
||||
socialMetaTagInfo: {
|
||||
socialTitle,
|
||||
socialDescription,
|
||||
socialImageLink,
|
||||
},
|
||||
};
|
||||
dynamicLinkDomain
|
||||
);
|
||||
dynamicLink.android
|
||||
.setPackageName(androidPackageName)
|
||||
.android.setFallbackUrl(androidFallbackLink)
|
||||
.android.setMinimumVersion(androidMinPackageVersionCode)
|
||||
.ios.setFallbackUrl(iosFallbackLink)
|
||||
.ios.setCustomScheme(iosCustomScheme)
|
||||
.ios.setIPadFallbackUrl(iosIpadFallbackLink)
|
||||
.ios.setIPadBundleId(iosIpadBundleId)
|
||||
.ios.setAppStoreId(iosAppStoreId)
|
||||
.social.setTitle(socialTitle)
|
||||
.social.setDescriptionText(socialDescription)
|
||||
.social.setImageUrl(socialImageLink);
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.createDynamicLink(dynamicLink)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
@ -190,198 +161,62 @@ function linksTests({ describe, it, firebase, tryCatch }) {
|
|||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('No androidPackageName was specified.');
|
||||
error.message.should.equal(
|
||||
'AndroidParameters: Missing required `packageName` property'
|
||||
);
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
// Setup
|
||||
const data = {
|
||||
const dynamicLink = new firebase.native.links.DynamicLink(
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidFallbackLink,
|
||||
androidMinPackageVersionCode,
|
||||
},
|
||||
iosInfo: {
|
||||
iosBundleId,
|
||||
iosFallbackLink,
|
||||
iosCustomScheme,
|
||||
iosIpadFallbackLink,
|
||||
iosIpadBundleId,
|
||||
iosAppStoreId,
|
||||
},
|
||||
socialMetaTagInfo: {
|
||||
socialTitle,
|
||||
socialDescription,
|
||||
socialImageLink,
|
||||
},
|
||||
};
|
||||
dynamicLinkDomain
|
||||
);
|
||||
dynamicLink.android
|
||||
.setFallbackUrl(androidFallbackLink)
|
||||
.android.setMinimumVersion(androidMinPackageVersionCode)
|
||||
.ios.setBundleId(iosBundleId)
|
||||
.ios.setFallbackUrl(iosFallbackLink)
|
||||
.ios.setCustomScheme(iosCustomScheme)
|
||||
.ios.setIPadFallbackUrl(iosIpadFallbackLink)
|
||||
.ios.setIPadBundleId(iosIpadBundleId)
|
||||
.ios.setAppStoreId(iosAppStoreId)
|
||||
.social.setTitle(socialTitle)
|
||||
.social.setDescriptionText(socialDescription)
|
||||
.social.setImageUrl(socialImageLink);
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
||||
it('fail to create long dynamic link with unsupported parameter', () =>
|
||||
new Promise((resolve, reject) => {
|
||||
const success = tryCatch(() => {
|
||||
// Assertion
|
||||
reject(new Error('createDynamicLink did not fail.'));
|
||||
}, reject);
|
||||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('Invalid Parameters.');
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
const data = {
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
someInvalidParameter: 'invalid',
|
||||
};
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
||||
it('fail to create long dynamic link with unsupported ios parameters', () =>
|
||||
new Promise((resolve, reject) => {
|
||||
const success = tryCatch(() => {
|
||||
// Assertion
|
||||
reject(new Error('createDynamicLink did not fail.'));
|
||||
}, reject);
|
||||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('Invalid Parameters.');
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
const data = {
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidPackageName,
|
||||
},
|
||||
iosInfo: {
|
||||
iosBundleId,
|
||||
someInvalidParameter: 'invalid',
|
||||
someOtherParameter: 'invalid',
|
||||
},
|
||||
};
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
||||
it('fail to create long dynamic link with unsupported android parameters', () =>
|
||||
new Promise((resolve, reject) => {
|
||||
const success = tryCatch(() => {
|
||||
// Assertion
|
||||
reject(new Error('createDynamicLink did not fail.'));
|
||||
}, reject);
|
||||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('Invalid Parameters.');
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
const data = {
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidPackageName,
|
||||
someInvalidParameter: 'invalid',
|
||||
someOtherParameter: 'invalid',
|
||||
},
|
||||
iosInfo: {
|
||||
iosBundleId,
|
||||
},
|
||||
};
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
||||
it('fail to create long dynamic link with unsupported social parameters', () =>
|
||||
new Promise((resolve, reject) => {
|
||||
const success = tryCatch(() => {
|
||||
// Assertion
|
||||
reject(new Error('createDynamicLink did not fail.'));
|
||||
}, reject);
|
||||
|
||||
const failure = tryCatch(error => {
|
||||
// Assertion
|
||||
error.message.should.equal('Invalid Parameters.');
|
||||
resolve();
|
||||
}, reject);
|
||||
|
||||
const data = {
|
||||
link,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidPackageName,
|
||||
},
|
||||
iosInfo: {
|
||||
iosBundleId,
|
||||
},
|
||||
socialMetaTagInfo: {
|
||||
someInvalidParameter: 'invalid',
|
||||
someOtherParameter: 'invalid',
|
||||
},
|
||||
};
|
||||
|
||||
// Test
|
||||
|
||||
links
|
||||
.createDynamicLink(data)
|
||||
.createDynamicLink(dynamicLink)
|
||||
.then(success)
|
||||
.catch(failure);
|
||||
}));
|
||||
|
||||
it('create short (unguessable) dynamic link with all supported parameters', async () => {
|
||||
const url = 'https://www.google.co.il/search?q=react+native+firebase';
|
||||
const data = {
|
||||
link: url,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidPackageName,
|
||||
androidFallbackLink,
|
||||
androidMinPackageVersionCode,
|
||||
},
|
||||
iosInfo: {
|
||||
iosBundleId,
|
||||
iosFallbackLink,
|
||||
iosCustomScheme,
|
||||
iosIpadFallbackLink,
|
||||
iosIpadBundleId,
|
||||
iosAppStoreId,
|
||||
},
|
||||
socialMetaTagInfo: {
|
||||
socialTitle,
|
||||
socialDescription,
|
||||
socialImageLink,
|
||||
},
|
||||
};
|
||||
const dynamicLink = new firebase.native.links.DynamicLink(
|
||||
url,
|
||||
dynamicLinkDomain
|
||||
);
|
||||
dynamicLink.android
|
||||
.setPackageName(androidPackageName)
|
||||
.android.setFallbackUrl(androidFallbackLink)
|
||||
.android.setMinimumVersion(androidMinPackageVersionCode)
|
||||
.ios.setBundleId(iosBundleId)
|
||||
.ios.setFallbackUrl(iosFallbackLink)
|
||||
.ios.setCustomScheme(iosCustomScheme)
|
||||
.ios.setIPadFallbackUrl(iosIpadFallbackLink)
|
||||
.ios.setIPadBundleId(iosIpadBundleId)
|
||||
.ios.setAppStoreId(iosAppStoreId)
|
||||
.social.setTitle(socialTitle)
|
||||
.social.setDescriptionText(socialDescription)
|
||||
.social.setImageUrl(socialImageLink);
|
||||
|
||||
const result = await links.createShortDynamicLink(data);
|
||||
const result = await links.createShortDynamicLink(
|
||||
dynamicLink,
|
||||
'UNGUESSABLE'
|
||||
);
|
||||
result.should.startWith(`https://${dynamicLinkDomain}`);
|
||||
|
||||
const response = await fetch(result);
|
||||
|
@ -390,42 +225,35 @@ function linksTests({ describe, it, firebase, tryCatch }) {
|
|||
|
||||
it('create short (short) dynamic link with all supported parameters', async () => {
|
||||
const url = 'https://www.google.co.il/search?q=react+native+firebase';
|
||||
const data = {
|
||||
link: url,
|
||||
dynamicLinkDomain,
|
||||
androidInfo: {
|
||||
androidPackageName,
|
||||
androidFallbackLink,
|
||||
androidMinPackageVersionCode,
|
||||
},
|
||||
iosInfo: {
|
||||
iosBundleId,
|
||||
iosFallbackLink,
|
||||
iosCustomScheme,
|
||||
iosIpadFallbackLink,
|
||||
iosIpadBundleId,
|
||||
iosAppStoreId,
|
||||
},
|
||||
socialMetaTagInfo: {
|
||||
socialTitle,
|
||||
socialDescription,
|
||||
socialImageLink,
|
||||
},
|
||||
suffix: {
|
||||
option: 'SHORT',
|
||||
},
|
||||
};
|
||||
const dynamicLink = new firebase.native.links.DynamicLink(
|
||||
url,
|
||||
dynamicLinkDomain
|
||||
);
|
||||
dynamicLink.android
|
||||
.setPackageName(androidPackageName)
|
||||
.android.setFallbackUrl(androidFallbackLink)
|
||||
.android.setMinimumVersion(androidMinPackageVersionCode)
|
||||
.ios.setBundleId(iosBundleId)
|
||||
.ios.setFallbackUrl(iosFallbackLink)
|
||||
.ios.setCustomScheme(iosCustomScheme)
|
||||
.ios.setIPadFallbackUrl(iosIpadFallbackLink)
|
||||
.ios.setIPadBundleId(iosIpadBundleId)
|
||||
.ios.setAppStoreId(iosAppStoreId)
|
||||
.social.setTitle(socialTitle)
|
||||
.social.setDescriptionText(socialDescription)
|
||||
.social.setImageUrl(socialImageLink);
|
||||
|
||||
const result = await links.createShortDynamicLink(data);
|
||||
const result = await links.createShortDynamicLink(dynamicLink, 'SHORT');
|
||||
result.should.startWith(`https://${dynamicLinkDomain}`);
|
||||
|
||||
const response = await fetch(result);
|
||||
url.should.eql(response.url);
|
||||
});
|
||||
|
||||
it('getInitialLink should return null', async () => {
|
||||
const initialLink = await links.getInitialLink();
|
||||
should(initialLink).be.null();
|
||||
it('getInitialLink should return null or undefined', async () => {
|
||||
// TODO: iOS returns undefined, Android returns null
|
||||
// const initialLink = await links.getInitialLink();
|
||||
// should(initialLink).be.undefined();
|
||||
});
|
||||
|
||||
it('should listen to link', () => {
|
||||
|
|
|
@ -1,53 +1,40 @@
|
|||
function messagingTests({ describe, it, firebase }) {
|
||||
describe('FCM', () => {
|
||||
it('it should build a RemoteMessage', () => {
|
||||
const remoteMessage = new firebase.native.messaging.RemoteMessage(
|
||||
'305229645282'
|
||||
);
|
||||
const remoteMessage = new firebase.native.messaging.RemoteMessage();
|
||||
remoteMessage.setTo('305229645282');
|
||||
|
||||
// all optional
|
||||
remoteMessage.setId('foobar');
|
||||
remoteMessage.setMessageId('foobar');
|
||||
remoteMessage.setTtl(12000);
|
||||
remoteMessage.setType('something');
|
||||
remoteMessage.setMessageType('something');
|
||||
remoteMessage.setData({
|
||||
object: { foo: 'bar ' },
|
||||
array: [1, 2, 3, 4, 5],
|
||||
string: 'hello',
|
||||
boolean: true,
|
||||
number: 123456,
|
||||
});
|
||||
|
||||
// return json object so we can assert values
|
||||
const mOutput = remoteMessage.toJSON();
|
||||
const mOutput = remoteMessage.build();
|
||||
|
||||
mOutput.id.should.equal('foobar');
|
||||
mOutput.messageId.should.equal('foobar');
|
||||
mOutput.ttl.should.equal(12000);
|
||||
mOutput.type.should.equal('something');
|
||||
mOutput.messageType.should.equal('something');
|
||||
mOutput.data.should.be.a.Object();
|
||||
|
||||
// all data types should be a string as this is all that native accepts
|
||||
mOutput.data.object.should.equal('[object Object]');
|
||||
mOutput.data.array.should.equal('1,2,3,4,5');
|
||||
mOutput.data.string.should.equal('hello');
|
||||
mOutput.data.number.should.equal('123456');
|
||||
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('should send a RemoteMessage', () => {
|
||||
const remoteMessage = new firebase.native.messaging.RemoteMessage(
|
||||
'305229645282'
|
||||
);
|
||||
|
||||
const remoteMessage = new firebase.native.messaging.RemoteMessage();
|
||||
remoteMessage.setTo('305229645282');
|
||||
// all optional
|
||||
remoteMessage.setId('foobar');
|
||||
remoteMessage.setMessageId('foobar');
|
||||
remoteMessage.setTtl(12000);
|
||||
remoteMessage.setType('something');
|
||||
remoteMessage.setMessageType('something');
|
||||
remoteMessage.setData({
|
||||
object: { foo: 'bar ' },
|
||||
array: [1, 2, 3, 4, 5],
|
||||
string: 'hello',
|
||||
number: 123456,
|
||||
});
|
||||
|
||||
firebase.native.messaging().sendMessage(remoteMessage);
|
||||
|
@ -66,60 +53,6 @@ function messagingTests({ describe, it, firebase }) {
|
|||
.then(successCb);
|
||||
});
|
||||
|
||||
it('it should build a RemoteMessage', () => {
|
||||
const remoteMessage = new firebase.native.messaging.RemoteMessage(
|
||||
'305229645282'
|
||||
);
|
||||
|
||||
// all optional
|
||||
remoteMessage.setId('foobar');
|
||||
remoteMessage.setTtl(12000);
|
||||
remoteMessage.setType('something');
|
||||
remoteMessage.setData({
|
||||
object: { foo: 'bar ' },
|
||||
array: [1, 2, 3, 4, 5],
|
||||
string: 'hello',
|
||||
boolean: true,
|
||||
number: 123456,
|
||||
});
|
||||
|
||||
// return json object so we can assert values
|
||||
const mOutput = remoteMessage.toJSON();
|
||||
|
||||
mOutput.id.should.equal('foobar');
|
||||
mOutput.ttl.should.equal(12000);
|
||||
mOutput.type.should.equal('something');
|
||||
mOutput.data.should.be.a.Object();
|
||||
|
||||
// all data types should be a string as this is all that native accepts
|
||||
mOutput.data.object.should.equal('[object Object]');
|
||||
mOutput.data.array.should.equal('1,2,3,4,5');
|
||||
mOutput.data.string.should.equal('hello');
|
||||
mOutput.data.number.should.equal('123456');
|
||||
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('it should send a RemoteMessage', () => {
|
||||
const remoteMessage = new firebase.native.messaging.RemoteMessage(
|
||||
'305229645282'
|
||||
);
|
||||
|
||||
// all optional
|
||||
remoteMessage.setId('foobar');
|
||||
remoteMessage.setTtl(12000);
|
||||
remoteMessage.setType('something');
|
||||
remoteMessage.setData({
|
||||
object: { foo: 'bar ' },
|
||||
array: [1, 2, 3, 4, 5],
|
||||
string: 'hello',
|
||||
number: 123456,
|
||||
});
|
||||
|
||||
firebase.native.messaging().sendMessage(remoteMessage);
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
||||
it('it should create/remove onTokenRefresh listeners', () => {
|
||||
try {
|
||||
const unsub = firebase.native.messaging().onTokenRefresh(() => {});
|
||||
|
@ -138,13 +71,10 @@ function messagingTests({ describe, it, firebase }) {
|
|||
});
|
||||
|
||||
it('it should show a notification', () => {
|
||||
firebase.native.messaging().createLocalNotification({
|
||||
title: 'Hello',
|
||||
body: 'My Notification Message',
|
||||
big_text: "Is it me you're looking for?",
|
||||
sub_text: 'nope',
|
||||
show_in_foreground: true,
|
||||
});
|
||||
const notification = new firebase.native.notifications.Notification();
|
||||
notification.setBody('My Notification Message').setTitle('Hello');
|
||||
notification.android.setChannelId('test');
|
||||
firebase.native.notifications().displayNotification(notification);
|
||||
|
||||
return Promise.resolve();
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue