CB-13145 : added getFrameworks to unit test
authorAudrey So <audreyso@apache.org>
Fri, 25 Aug 2017 20:26:40 +0000 (13:26 -0700)
committerSteve Gill <stevengill97@gmail.com>
Wed, 30 Aug 2017 05:42:42 +0000 (22:42 -0700)
spec/PluginInfo/PluginInfo.spec.js
spec/fixtures/plugins/org.test.src/plugin.xml [new file with mode: 0644]

index f35147d..5fdaf87 100644 (file)
 
 var PluginInfo = require('../../src/PluginInfo/PluginInfo');
 var path = require('path');
-
 var pluginsDir = path.join(__dirname, '../fixtures/plugins');
 
 describe('PluginInfo', function () {
     it('Test 001 : should read a plugin.xml file', function () {
         /* eslint-disable no-unused-vars */
-        var p, prefs, assets, deps, configFiles, infos, srcFiles;
-        var headerFiles, libFiles, resourceFiles;
+        var p;
+        var prefs;
+        var assets;
+        var deps;
+        var configFiles;
+        var infos;
+        var srcFiles;
+        var headerFiles;
+        var libFiles;
+        var resourceFiles;
+        var getFrameworks;
         expect(function () {
             p = new PluginInfo(path.join(pluginsDir, 'ChildBrowser'));
             prefs = p.getPreferences('android');
@@ -37,6 +45,7 @@ describe('PluginInfo', function () {
             srcFiles = p.getSourceFiles('android');
             headerFiles = p.getHeaderFiles('android');
             libFiles = p.getLibFiles('android');
+            getFrameworks = p.getFrameworks('android');
             resourceFiles = p.getResourceFiles('android');
         }).not.toThrow();
         expect(p).toBeDefined();
@@ -49,4 +58,16 @@ describe('PluginInfo', function () {
             new PluginInfo('/non/existent/dir'); /* eslint no-new : 0 */
         }).toThrow();
     });
+
+    it('Test 003: replace framework src', function () {
+        var p = new PluginInfo(path.join(pluginsDir, 'org.test.src'));
+        var result = p.getFrameworks('android', {cli_variables: { FCM_VERSION: '9.0.0' }});
+        expect(result[2].src).toBe('com.google.firebase:firebase-messaging:9.0.0');
+    });
+
+    it('Test 004: framework src uses default variable', function () {
+        var p = new PluginInfo(path.join(pluginsDir, 'org.test.src'));
+        var result = p.getFrameworks('android', {});
+        expect(result[2].src).toBe('com.google.firebase:firebase-messaging:11.0.1');
+    });
 });
diff --git a/spec/fixtures/plugins/org.test.src/plugin.xml b/spec/fixtures/plugins/org.test.src/plugin.xml
new file mode 100644 (file)
index 0000000..6d1aa91
--- /dev/null
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:amazon="http://schemas.android.com/apk/lib/com.amazon.device.ads" xmlns:rim="http://www.blackberry.com/ns/widgets" id="phonegap-plugin-push" version="2.0.0">
+  <name>PushPlugin</name>
+  <description>
+    This plugin allows your application to receive push notifications on Android, iOS and Windows devices.
+    Android uses Firebase Cloud Messaging.
+    iOS uses Apple APNS Notifications.
+    Windows uses Microsoft WNS Notifications.
+  </description>
+  <license>MIT</license>
+  <js-module src="www/push.js" name="PushNotification">
+    <clobbers target="PushNotification"/>
+  </js-module>
+  <engines>
+    <engine name="cordova" version=">=7.0.0"/>
+    <engine name="cordova-android" version=">=6.2.1"/>
+    <engine name="cordova-ios" version=">=4.4.0"/>
+  </engines>
+
+  <platform name="android">
+      <feature name="PushNotification">
+        <param name="android-package" value="com.adobe.phonegap.push.PushPlugin"/>
+      </feature>
+    <config-file target="AndroidManifest.xml" parent="/manifest">
+      <uses-permission android:name="android.permission.INTERNET"/>
+      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+      <uses-permission android:name="android.permission.WAKE_LOCK"/>
+      <uses-permission android:name="android.permission.VIBRATE"/>
+    </config-file>
+        <preference name="FCM_VERSION" default="11.0.1" />
+<config-file target="res/xml/config.xml" parent="/*">
+<string>$FCM_VERSION</string>
+</config-file>
+    <config-file target="AndroidManifest.xml" parent="/manifest/application">
+      <activity android:name="com.adobe.phonegap.push.PushHandlerActivity" android:exported="true" android:permission="${applicationId}.permission.PushHandlerActivity"/>
+      <receiver android:name="com.adobe.phonegap.push.BackgroundActionButtonHandler"/>
+      <receiver android:name="com.adobe.phonegap.push.PushDismissedHandler"/>
+      <service android:name="com.adobe.phonegap.push.FCMService">
+        <intent-filter>
+          <action android:name="com.google.firebase.MESSAGING_EVENT"/>
+        </intent-filter>
+      </service>
+      <service android:name="com.adobe.phonegap.push.PushInstanceIDListenerService">
+        <intent-filter>
+          <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
+        </intent-filter>
+      </service>
+    </config-file>
+    <framework src="com.android.support:support-v13:25.1.0"/>
+    <framework src="me.leolin:ShortcutBadger:1.1.17@aar"/>
+    <framework src="com.google.firebase:firebase-messaging:$FCM_VERSION"/>
+    <framework src="push.gradle" custom="true" type="gradleReference"/>
+    <source-file src="src/android/com/adobe/phonegap/push/FCMService.java" target-dir="src/com/adobe/phonegap/push/"/>
+    <source-file src="src/android/com/adobe/phonegap/push/PushConstants.java" target-dir="src/com/adobe/phonegap/push/"/>
+    <source-file src="src/android/com/adobe/phonegap/push/PushHandlerActivity.java" target-dir="src/com/adobe/phonegap/push/"/>
+    <source-file src="src/android/com/adobe/phonegap/push/PushInstanceIDListenerService.java" target-dir="src/com/adobe/phonegap/push/"/>
+    <source-file src="src/android/com/adobe/phonegap/push/PushPlugin.java" target-dir="src/com/adobe/phonegap/push/"/>
+    <source-file src="src/android/com/adobe/phonegap/push/PermissionUtils.java" target-dir="src/com/adobe/phonegap/push/"/>
+    <source-file src="src/android/com/adobe/phonegap/push/BackgroundActionButtonHandler.java" target-dir="src/com/adobe/phonegap/push/"/>
+    <source-file src="src/android/com/adobe/phonegap/push/PushDismissedHandler.java" target-dir="src/com/adobe/phonegap/push/"/>
+  </platform>
+
+  <platform name="browser">
+    <js-module src="www/browser/push.js" name="BrowserPush">
+      <clobbers target="PushNotification"/>
+    </js-module>
+    <asset src="src/browser/ServiceWorker.js" target="ServiceWorker.js"/>
+    <asset src="src/browser/manifest.json" target="manifest.json"/>
+  </platform>
+  <platform name="ios">
+    <config-file target="config.xml" parent="/*">
+      <feature name="PushNotification">
+        <param name="ios-package" value="PushPlugin"/>
+      </feature>
+    </config-file>
+    <config-file target="*-Info.plist" parent="UIBackgroundModes">
+      <array>
+        <string>remote-notification</string>
+      </array>
+    </config-file>
+    <config-file target="*-Debug.plist" parent="aps-environment">
+      <string>development</string>
+    </config-file>
+    <config-file target="*-Release.plist" parent="aps-environment">
+      <string>production</string>
+    </config-file>
+    <source-file src="src/ios/AppDelegate+notification.m"/>
+    <source-file src="src/ios/PushPlugin.m"/>
+    <header-file src="src/ios/AppDelegate+notification.h"/>
+    <header-file src="src/ios/PushPlugin.h"/>
+    <framework src="FirebaseMessaging" type="podspec" spec="~> 2.0.0"/>
+  </platform>
+  <platform name="windows">
+    <hook type="after_plugin_install" src="hooks/windows/setToastCapable.js"/>
+    <js-module src="src/windows/PushPluginProxy.js" name="PushPlugin">
+      <runs/>
+    </js-module>
+    <config-file target="config.xml" parent="/*">
+      <preference name="WindowsToastCapable" value="true"/>
+    </config-file>
+  </platform>
+</plugin>
\ No newline at end of file