| /** |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| */ |
| |
| var cordova = require('../src/cordova/cordova'), |
| path = require('path'); |
| |
| describe('retrieval of project metadata', function () { |
| var projectRoot = path.resolve(__dirname, 'Projects/ProjectMetadata'); |
| |
| it('retrieve platforms saved in config.xml', function (done) { |
| var androidVersion = '3.7.1'; |
| var browserSrc = 'https://github.com/apache/cordova-browser.git'; |
| |
| cordova.raw.projectMetadata.getPlatforms(projectRoot) |
| .then(function (platforms) { |
| expect(platforms.length).toBe(2); |
| |
| // Android platform has version defined in deprecated version field - should still work. |
| var androidPlatform = findPlatform(platforms, 'android'); |
| expect(androidPlatform).not.toBeNull(); |
| expect(androidPlatform.version).toBe(androidVersion); |
| expect(androidPlatform.src).toBeUndefined(); |
| |
| // Browser platform has source defined in the spec field. |
| var browserPlatform = findPlatform(platforms, 'browser'); |
| expect(browserPlatform).not.toBeNull(); |
| expect(browserPlatform.version).toBeUndefined(); |
| expect(browserPlatform.src).toBe(browserSrc); |
| }).finally(done); |
| }); |
| |
| it('retrieve plugins saved in config.xml', function (done) { |
| var deviceId = 'org.apache.cordova.device'; |
| var deviceVersion = '0.3.0'; |
| |
| var cameraId = 'org.apache.cordova.camera'; |
| var cameraSrc = 'https://github.com/apache/cordova-plugin-camera.git'; |
| var cameraVariableName = 'TEST_VARIABLE'; |
| var cameraVariableValue = 'My Test Variable'; |
| |
| var fileId = 'org.apache.cordova.file'; |
| var fileSource = 'https://github.com/apache/cordova-plugin-file.git'; |
| |
| cordova.raw.projectMetadata.getPlugins(projectRoot) |
| .then(function (plugins) { |
| expect(plugins.length).toBe(3); |
| |
| // Device plugin uses current spec attribute to specify version - should be returned in version field. |
| var devicePlugin = findPlugin(plugins, deviceId); |
| expect(devicePlugin).not.toBeNull(); |
| expect(devicePlugin.version).toBe(deviceVersion); |
| expect(devicePlugin.src).toBeUndefined(); |
| |
| var deviceVariables = devicePlugin.variables; |
| expect(deviceVariables).not.toBeNull(); |
| expect(Array.isArray(deviceVariables)).toBeTruthy(); |
| expect(deviceVariables.length).toBe(0); |
| |
| // Camera plugin uses deprecated src attribute - still should work. |
| var cameraPlugin = findPlugin(plugins, cameraId); |
| expect(cameraPlugin).not.toBeNull(); |
| expect(cameraPlugin.src).toBe(cameraSrc); |
| expect(cameraPlugin.version).toBeUndefined(); |
| |
| var cameraVariables = cameraPlugin.variables; |
| expect(cameraVariables).not.toBeNull(); |
| expect(cameraVariables.length).toBe(1); |
| expect(cameraVariables[0].name).toBe(cameraVariableName); |
| expect(cameraVariables[0].value).toBe(cameraVariableValue); |
| |
| // File plugin uses deprecated src and version attributes - version should be ignored. |
| var filePlugin = findPlugin(plugins, fileId); |
| expect(filePlugin).not.toBeNull(); |
| expect(filePlugin.version).toBeUndefined(); |
| expect(filePlugin.src).toBe(fileSource); |
| |
| var fileVariables = filePlugin.variables; |
| expect(fileVariables).not.toBeNull(); |
| expect(Array.isArray(fileVariables)).toBeTruthy(); |
| expect(fileVariables.length).toBe(0); |
| }).finally(done); |
| }); |
| }); |
| |
| function findPlatform(platforms, platformName) { |
| for (var i = 0; i < platforms.length; i++) { |
| if (platforms[i].name === platformName) { |
| return platforms[i]; |
| } |
| } |
| return null; |
| } |
| |
| function findPlugin(plugins, pluginId) { |
| for (var i = 0; i < plugins.length; i++) { |
| if (plugins[i].name === pluginId) { |
| return plugins[i]; |
| } |
| } |
| return null; |
| } |