@@ -5,6 +5,7 @@ import {Yok} from '../lib/common/yok';
5
5
import future = require( "fibers/future" ) ;
6
6
import * as stubs from './stubs' ;
7
7
import { NodePackageManager } from "../lib/node-package-manager" ;
8
+ import { NpmInstallationManager } from "../lib/npm-installation-manager" ;
8
9
import { FileSystem } from "../lib/common/file-system" ;
9
10
import { ProjectData } from "../lib/project-data" ;
10
11
import { ChildProcess } from "../lib/common/child-process" ;
@@ -23,6 +24,9 @@ import {ResourceLoader} from "../lib/common/resource-loader";
23
24
import { EOL } from "os" ;
24
25
import { PluginsService } from "../lib/services/plugins-service" ;
25
26
import { AddPluginCommand } from "../lib/commands/plugin/add-plugin" ;
27
+ import { Builder } from "../lib/tools/broccoli/builder" ;
28
+ import { AndroidProjectService } from "../lib/services/android-project-service" ;
29
+ import { AndroidToolsInfo } from "../lib/android-tools-info" ;
26
30
import { assert } from "chai" ;
27
31
import * as path from "path" ;
28
32
import * as temp from "temp" ;
@@ -40,13 +44,17 @@ function createTestInjector() {
40
44
testInjector . register ( "childProcess" , ChildProcess ) ;
41
45
testInjector . register ( "platformService" , PlatformService ) ;
42
46
testInjector . register ( "platformsData" , PlatformsData ) ;
43
- testInjector . register ( "androidProjectService" , { } ) ;
47
+ testInjector . register ( "androidEmulatorServices" , { } ) ;
48
+ testInjector . register ( "androidToolsInfo" , AndroidToolsInfo ) ;
49
+ testInjector . register ( "sysInfo" , { } ) ;
50
+ testInjector . register ( "mobileHelper" , { } ) ;
51
+ testInjector . register ( "androidProjectService" , AndroidProjectService ) ;
44
52
testInjector . register ( "iOSProjectService" , { } ) ;
45
53
testInjector . register ( "devicesServices" , { } ) ;
46
54
testInjector . register ( "projectDataService" , ProjectDataService ) ;
47
55
testInjector . register ( "prompter" , { } ) ;
48
56
testInjector . register ( "resources" , ResourceLoader ) ;
49
- testInjector . register ( "broccoliBuilder" , { } ) ;
57
+ testInjector . register ( "broccoliBuilder" , Builder ) ;
50
58
testInjector . register ( "options" , Options ) ;
51
59
testInjector . register ( "errors" , Errors ) ;
52
60
testInjector . register ( "logger" , stubs . LoggerStub ) ;
@@ -71,7 +79,7 @@ function createTestInjector() {
71
79
savePluginVariablesInProjectFile : ( pluginData : IPluginData ) => future . fromResult ( ) ,
72
80
interpolatePluginVariables : ( pluginData : IPluginData , pluginConfigurationFileContent : string ) => future . fromResult ( pluginConfigurationFileContent )
73
81
} ) ;
74
- testInjector . register ( "npmInstallationManager" , { } ) ;
82
+ testInjector . register ( "npmInstallationManager" , NpmInstallationManager ) ;
75
83
76
84
return testInjector ;
77
85
}
@@ -87,7 +95,7 @@ function createProjectFile(testInjector: IInjector): string {
87
95
"nativescript" : {
88
96
"id" : "org.nativescript.Test" ,
89
97
"tns-android" : {
90
- "version" : "1.0 .0"
98
+ "version" : "1.4 .0"
91
99
}
92
100
}
93
101
} ;
@@ -203,7 +211,7 @@ describe("Plugins service", () => {
203
211
} ) ;
204
212
it ( "fails when the plugin does not support the installed framework" , ( ) => {
205
213
let isWarningMessageShown = false ;
206
- let expectedWarningMessage = "mySamplePlugin 1.0.1 for android is not compatible with the currently installed framework version 1.0 .0." ;
214
+ let expectedWarningMessage = "mySamplePlugin 1.5.0 for android is not compatible with the currently installed framework version 1.4 .0." ;
207
215
208
216
// Creates plugin in temp folder
209
217
let pluginName = "mySamplePlugin" ;
@@ -214,7 +222,7 @@ describe("Plugins service", () => {
214
222
"version" : "0.0.1" ,
215
223
"nativescript" : {
216
224
"platforms" : {
217
- "android" : "1.0.1 "
225
+ "android" : "1.5.0 "
218
226
}
219
227
} ,
220
228
} ;
@@ -557,23 +565,34 @@ describe("Plugins service", () => {
557
565
// Mock platformsData
558
566
let platformsData = testInjector . resolve ( "platformsData" ) ;
559
567
platformsData . getPlatformData = ( platform : string ) => {
568
+ let androidProjectService = testInjector . resolve ( "androidProjectService" ) ;
569
+
560
570
return {
561
571
appDestinationDirectoryPath : appDestinationDirectoryPath ,
562
572
frameworkPackageName : "tns-android" ,
563
573
configurationFileName : "AndroidManifest.xml" ,
564
- configurationFilePath : path . join ( appDestinationDirectoryPath , "AndroidManifest.xml" ) ,
574
+ configurationFilePath : path . join ( appDestinationDirectoryPath , "src" , "main" , "AndroidManifest.xml" ) ,
575
+ relativeToFrameworkConfigurationFilePath : path . join ( "src" , "main" , "AndroidManifest.xml" ) ,
565
576
mergeXmlConfig : [ { "nodename" : "manifest" , "attrname" : "*" } ] ,
566
577
platformProjectService : {
567
- preparePluginNativeCode : ( pluginData : IPluginData ) => future . fromResult ( )
578
+ preparePluginNativeCode : ( pluginData : IPluginData ) => future . fromResult ( ) ,
579
+ interpolateConfigurationFile : ( ) => androidProjectService . interpolateConfigurationFile ( )
568
580
} ,
569
581
normalizedPlatformName : "Android"
570
582
} ;
571
583
} ;
572
584
585
+ // Mock projectData
586
+ let projectData = testInjector . resolve ( "projectData" ) ;
587
+ projectData . projectId = "com.example.android.basiccontactables" ;
588
+
573
589
// Ensure the pluginDestinationPath folder exists
574
590
let pluginPlatformsDirPath = path . join ( projectFolder , "node_modules" , pluginName , "platforms" , "android" ) ;
575
591
fs . ensureDirectoryExists ( pluginPlatformsDirPath ) . wait ( ) ;
576
592
593
+ let shelljs = require ( "shelljs" ) ;
594
+ shelljs . cp ( "-R" , path . join ( pluginFolderPath , "*" ) , path . join ( projectFolder , "node_modules" , pluginName ) ) ;
595
+
577
596
// Creates valid plugin's AndroidManifest.xml file
578
597
let xml = '<?xml version="1.0" encoding="UTF-8"?>' +
579
598
'<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.basiccontactables" android:versionCode="1" android:versionName="1.0" >' +
@@ -584,11 +603,11 @@ describe("Plugins service", () => {
584
603
585
604
pluginsService . prepare ( pluginJsonData ) . wait ( ) ;
586
605
587
- let expectedXml = '<?xmlversion="1.0"encoding="UTF-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.android.basiccontactables"android:versionCode="1"android:versionName="1.0"><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.INTERNET"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/Theme.Sample"><activityandroid:name="com.example.android.basiccontactables.MainActivity"android:label="@string/app_name"android:launchMode="singleTop"><meta-dataandroid:name="android.app.searchable"android:resource="@xml/searchable"/><intent-filter><actionandroid:name="android.intent.action.SEARCH"/></intent-filter><intent-filter><actionandroid:name="android.intent.action.MAIN"/></intent-filter></activity></application><uses-permissionandroid:name="android.permission.READ_CONTACTS"/></manifest>' ;
606
+ let expectedXml = '<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.android.basiccontactables"android:versionCode="1"android:versionName="1.0"><supports-screensandroid:smallScreens="true"android:normalScreens="true"android:largeScreens="true"android:xlargeScreens="true"/><uses-sdkandroid:minSdkVersion="17"android:targetSdkVersion="23"/><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.INTERNET"/><applicationandroid:name="com.tns.NativeScriptApplication"android:allowBackup="true"android:icon="@drawable/icon"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name="com.tns.NativeScriptActivity"android:label="@string/title_activity_kimera"android:configChanges="keyboardHidden|orientation|screenSize"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name="com.tns.ErrorReportActivity"/></application><uses-permissionandroid:name="android.permission.READ_CONTACTS"/></manifest>' ;
588
607
expectedXml = helpers . stringReplaceAll ( expectedXml , EOL , "" ) ;
589
608
expectedXml = helpers . stringReplaceAll ( expectedXml , " " , "" ) ;
590
609
591
- let actualXml = fs . readText ( path . join ( appDestinationDirectoryPath , "AndroidManifest.xml" ) ) . wait ( ) ;
610
+ let actualXml = fs . readText ( path . join ( appDestinationDirectoryPath , "src" , "main" , " AndroidManifest.xml") ) . wait ( ) ;
592
611
actualXml = helpers . stringReplaceAll ( actualXml , "\n" , "" ) ;
593
612
actualXml = helpers . stringReplaceAll ( actualXml , " " , "" ) ;
594
613
0 commit comments