Skip to content

Commit 599eb02

Browse files
committed
test: add tests and fix existing ones
1 parent 99a5ec8 commit 599eb02

File tree

3 files changed

+174
-0
lines changed

3 files changed

+174
-0
lines changed

test/plugins-service.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ import StaticConfigLib = require("../lib/config");
3535
import * as path from "path";
3636
import * as temp from "temp";
3737
import { PLUGINS_BUILD_DATA_FILENAME } from '../lib/constants';
38+
import { GradleCommandService } from '../lib/services/android/gradle-command-service';
39+
import { GradleBuildService } from '../lib/services/android/gradle-build-service';
40+
import { GradleBuildArgsService } from '../lib/services/android/gradle-build-args-service';
3841
temp.track();
3942

4043
let isErrorThrown = false;
@@ -150,6 +153,10 @@ function createTestInjector() {
150153
},
151154
extractPackage: async (packageName: string, destinationDirectory: string, options?: IPacoteExtractOptions): Promise<void> => undefined
152155
});
156+
testInjector.register("gradleCommandService", GradleCommandService);
157+
testInjector.register("gradleBuildService", GradleBuildService);
158+
testInjector.register("gradleBuildArgsService", GradleBuildArgsService);
159+
153160
return testInjector;
154161
}
155162

test/services/android-project-service.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ import { Yok } from "../../lib/common/yok";
33
import * as stubs from "../stubs";
44
import { assert } from "chai";
55
import * as sinon from "sinon";
6+
import { GradleCommandService } from "../../lib/services/android/gradle-command-service";
7+
import { GradleBuildService } from "../../lib/services/android/gradle-build-service";
8+
import { GradleBuildArgsService } from "../../lib/services/android/gradle-build-args-service";
69

710
const createTestInjector = (): IInjector => {
811
const testInjector = new Yok();
@@ -35,6 +38,9 @@ const createTestInjector = (): IInjector => {
3538
return true;
3639
}
3740
});
41+
testInjector.register("gradleCommandService", GradleCommandService);
42+
testInjector.register("gradleBuildService", GradleBuildService);
43+
testInjector.register("gradleBuildArgsService", GradleBuildArgsService);
3844

3945
return testInjector;
4046
};
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
import { Yok } from "../../../lib/common/yok";
2+
import { GradleBuildArgsService } from "../../../lib/services/android/gradle-build-args-service";
3+
import { assert } from "chai";
4+
5+
function createTestInjector(): IInjector {
6+
const injector = new Yok();
7+
injector.register("androidToolsInfo", {
8+
getToolsInfo: () => ({
9+
compileSdkVersion: 28,
10+
buildToolsVersion: "my-build-tools-version",
11+
generateTypings: true
12+
})
13+
});
14+
injector.register("logger", {});
15+
injector.register("gradleBuildArgsService", GradleBuildArgsService);
16+
17+
return injector;
18+
}
19+
20+
function executeTests(testCases: any[], testFunction: (gradleBuildArgsService: IGradleBuildArgsService, buildConfig: IAndroidBuildConfig) => string[]) {
21+
_.each(testCases, testCase => {
22+
it(testCase.name, () => {
23+
const injector = createTestInjector();
24+
if (testCase.logLevel) {
25+
const logger = injector.resolve("logger");
26+
logger.getLevel = () => testCase.logLevel;
27+
}
28+
29+
const gradleBuildArgsService = injector.resolve("gradleBuildArgsService");
30+
const args = testFunction(gradleBuildArgsService, testCase.buildConfig);
31+
32+
assert.deepEqual(args, testCase.expectedResult);
33+
});
34+
});
35+
}
36+
37+
const expectedInfoLoggingArgs = ["--quiet"];
38+
const expectedTraceLoggingArgs = ["--stacktrace", "--debug"];
39+
const expectedDebugBuildArgs = ["-PcompileSdk=android-28", "-PbuildToolsVersion=my-build-tools-version", "-PgenerateTypings=true"];
40+
const expectedReleaseBuildArgs = expectedDebugBuildArgs.concat(["-Prelease", "-PksPath=/Users/havaluova/Work/nativescript-cli/keyStorePath",
41+
"-Palias=keyStoreAlias", "-Ppassword=keyStoreAliasPassword", "-PksPassword=keyStorePassword"]);
42+
43+
const releaseBuildConfig = {
44+
release: true,
45+
keyStorePath: "keyStorePath",
46+
keyStoreAlias: "keyStoreAlias",
47+
keyStoreAliasPassword: "keyStoreAliasPassword",
48+
keyStorePassword: "keyStorePassword"
49+
};
50+
51+
describe("GradleBuildArgsService", () => {
52+
describe("getBuildTaskArgs", () => {
53+
const testCases = [
54+
{
55+
name: "should return correct args for debug build with info log",
56+
buildConfig: { release: false },
57+
logLevel: "INFO",
58+
expectedResult: ["assembleDebug"].concat(expectedInfoLoggingArgs).concat(expectedDebugBuildArgs)
59+
},
60+
{
61+
name: "should return correct args for debug build with trace log",
62+
buildConfig: { release: false },
63+
logLevel: "TRACE",
64+
expectedResult: ["assembleDebug"].concat(expectedTraceLoggingArgs).concat(expectedDebugBuildArgs)
65+
},
66+
{
67+
name: "should return correct args for release build with info log",
68+
buildConfig: releaseBuildConfig,
69+
logLevel: "INFO",
70+
expectedResult: ["assembleRelease"].concat(expectedInfoLoggingArgs).concat(expectedReleaseBuildArgs)
71+
},
72+
{
73+
name: "should return correct args for release build with trace log",
74+
buildConfig: releaseBuildConfig,
75+
logLevel: "TRACE",
76+
expectedResult: ["assembleRelease"].concat(expectedTraceLoggingArgs).concat(expectedReleaseBuildArgs)
77+
},
78+
{
79+
name: "should return correct args for debug build with info log and android bundle",
80+
buildConfig: { release: false, androidBundle: true },
81+
logLevel: "INFO",
82+
expectedResult: ["bundleDebug"].concat(expectedInfoLoggingArgs).concat(expectedDebugBuildArgs)
83+
},
84+
{
85+
name: "should return correct args for debug build with trace log and android bundle",
86+
buildConfig: { release: false, androidBundle: true },
87+
logLevel: "TRACE",
88+
expectedResult: ["bundleDebug"].concat(expectedTraceLoggingArgs).concat(expectedDebugBuildArgs)
89+
},
90+
{
91+
name: "should return correct args for release build with info log and android bundle",
92+
buildConfig: { ...releaseBuildConfig, androidBundle: true },
93+
logLevel: "INFO",
94+
expectedResult: ["bundleRelease"].concat(expectedInfoLoggingArgs).concat(expectedReleaseBuildArgs)
95+
},
96+
{
97+
name: "should return correct args for release build with trace log and android bundle",
98+
buildConfig: { ...releaseBuildConfig, androidBundle: true },
99+
logLevel: "TRACE",
100+
expectedResult: ["bundleRelease"].concat(expectedTraceLoggingArgs).concat(expectedReleaseBuildArgs)
101+
}
102+
];
103+
104+
executeTests(testCases, (gradleBuildArgsService: IGradleBuildArgsService, buildConfig: IAndroidBuildConfig) => gradleBuildArgsService.getBuildTaskArgs(buildConfig));
105+
});
106+
107+
describe("getCleanTaskArgs", () => {
108+
const testCases = [
109+
{
110+
name: "should return correct args for debug clean build with info log",
111+
buildConfig: { release: false },
112+
logLevel: "INFO",
113+
expectedResult: ["clean"].concat(expectedInfoLoggingArgs).concat(expectedDebugBuildArgs)
114+
},
115+
{
116+
name: "should return correct args for debug clean build with trace log",
117+
buildConfig: { release: false },
118+
logLevel: "TRACE",
119+
expectedResult: ["clean"].concat(expectedTraceLoggingArgs).concat(expectedDebugBuildArgs)
120+
},
121+
{
122+
name: "should return correct args for release clean build with info log",
123+
buildConfig: releaseBuildConfig,
124+
logLevel: "INFO",
125+
expectedResult: ["clean"].concat(expectedInfoLoggingArgs).concat(expectedReleaseBuildArgs)
126+
},
127+
{
128+
name: "should return correct args for release clean build with trace log",
129+
buildConfig: releaseBuildConfig,
130+
logLevel: "TRACE",
131+
expectedResult: ["clean"].concat(expectedTraceLoggingArgs).concat(expectedReleaseBuildArgs)
132+
},
133+
{
134+
name: "should return correct args for debug clean build with info log and android bundle",
135+
buildConfig: { release: false, androidBundle: true },
136+
logLevel: "INFO",
137+
expectedResult: ["clean"].concat(expectedInfoLoggingArgs).concat(expectedDebugBuildArgs)
138+
},
139+
{
140+
name: "should return correct args for debug clean build with trace log and android bundle",
141+
buildConfig: { release: false, androidBundle: true },
142+
logLevel: "TRACE",
143+
expectedResult: ["clean"].concat(expectedTraceLoggingArgs).concat(expectedDebugBuildArgs)
144+
},
145+
{
146+
name: "should return correct args for release clean build with info log and android bundle",
147+
buildConfig: { ...releaseBuildConfig, androidBundle: true },
148+
logLevel: "INFO",
149+
expectedResult: ["clean"].concat(expectedInfoLoggingArgs).concat(expectedReleaseBuildArgs)
150+
},
151+
{
152+
name: "should return correct args for release clean build with trace log and android bundle",
153+
buildConfig: { ...releaseBuildConfig, androidBundle: true },
154+
logLevel: "TRACE",
155+
expectedResult: ["clean"].concat(expectedTraceLoggingArgs).concat(expectedReleaseBuildArgs)
156+
}
157+
];
158+
159+
executeTests(testCases, (gradleBuildArgsService: IGradleBuildArgsService, buildConfig: IAndroidBuildConfig) => gradleBuildArgsService.getCleanTaskArgs(buildConfig));
160+
});
161+
});

0 commit comments

Comments
 (0)