Skip to content

Commit 2f3745a

Browse files
Fix unit tests (#2886)
1 parent b99145d commit 2f3745a

File tree

1 file changed

+36
-82
lines changed

1 file changed

+36
-82
lines changed

test/project-service.ts

+36-82
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,29 @@ let originalIsInteractive = helpers.isInteractive;
2929

3030
temp.track();
3131

32+
async function prepareTestingPath(testInjector: IInjector, packageToInstall: string, packageName: string, options?: INpmInstallOptions): Promise<string> {
33+
options = options || { dependencyType: "save" };
34+
const fs = testInjector.resolve<IFileSystem>("fs");
35+
36+
let npmInstallationManager = testInjector.resolve<INpmInstallationManager>("npmInstallationManager");
37+
let defaultTemplateDir = temp.mkdirSync("project-service");
38+
fs.writeJson(path.join(defaultTemplateDir, constants.PACKAGE_JSON_FILE_NAME), {
39+
"name": "defaultTemplate",
40+
"version": "1.0.0",
41+
"description": "dummy",
42+
"license": "MIT",
43+
"readme": "dummy",
44+
"repository": "dummy"
45+
});
46+
47+
await npmInstallationManager.install(packageToInstall, defaultTemplateDir, options);
48+
const defaultTemplatePath = path.join(defaultTemplateDir, constants.NODE_MODULES_FOLDER_NAME, packageName);
49+
50+
fs.deleteDirectory(path.join(defaultTemplatePath, constants.NODE_MODULES_FOLDER_NAME));
51+
52+
return defaultTemplatePath;
53+
}
54+
3255
class ProjectIntegrationTest {
3356
public testInjector: IInjector;
3457

@@ -146,85 +169,12 @@ describe("Project Service Tests", () => {
146169

147170
before(async () => {
148171
let projectIntegrationTest = new ProjectIntegrationTest();
149-
let fs: IFileSystem = projectIntegrationTest.testInjector.resolve("fs");
150-
let npmInstallationManager: INpmInstallationManager = projectIntegrationTest.testInjector.resolve("npmInstallationManager");
151-
152-
let defaultTemplateDir = temp.mkdirSync("defaultTemplate");
153-
fs.writeJson(path.join(defaultTemplateDir, "package.json"), {
154-
"name": "defaultTemplate",
155-
"version": "1.0.0",
156-
"description": "dummy",
157-
"license": "MIT",
158-
"readme": "dummy",
159-
"repository": "dummy"
160-
});
161-
162-
await npmInstallationManager.install(constants.RESERVED_TEMPLATE_NAMES["default"], defaultTemplateDir, { dependencyType: "save" });
163-
defaultTemplatePath = path.join(defaultTemplateDir, "node_modules", constants.RESERVED_TEMPLATE_NAMES["default"]);
164-
165-
fs.deleteDirectory(path.join(defaultTemplatePath, "node_modules"));
166-
167-
let defaultSpecificVersionTemplateDir = temp.mkdirSync("defaultTemplateSpeciffic");
168-
fs.writeJson(path.join(defaultSpecificVersionTemplateDir, "package.json"), {
169-
"name": "defaultTemplateSpecialVersion",
170-
"version": "1.0.0",
171-
"description": "dummy",
172-
"license": "MIT",
173-
"readme": "dummy",
174-
"repository": "dummy"
175-
});
176-
177-
await npmInstallationManager.install(constants.RESERVED_TEMPLATE_NAMES["default"], defaultSpecificVersionTemplateDir, { version: "1.4.0", dependencyType: "save" });
178-
defaultSpecificVersionTemplatePath = path.join(defaultSpecificVersionTemplateDir, "node_modules", constants.RESERVED_TEMPLATE_NAMES["default"]);
179-
180-
fs.deleteDirectory(path.join(defaultSpecificVersionTemplatePath, "node_modules"));
181-
182-
let angularTemplateDir = temp.mkdirSync("angularTemplate");
183-
fs.writeJson(path.join(angularTemplateDir, "package.json"), {
184-
"name": "angularTemplate",
185-
"version": "1.0.0",
186-
"description": "dummy",
187-
"license": "MIT",
188-
"readme": "dummy",
189-
"repository": "dummy"
190-
});
191-
192-
await npmInstallationManager.install(constants.RESERVED_TEMPLATE_NAMES["angular"], angularTemplateDir, { dependencyType: "save" });
193-
angularTemplatePath = path.join(angularTemplateDir, "node_modules", constants.RESERVED_TEMPLATE_NAMES["angular"]);
194-
195-
fs.deleteDirectory(path.join(angularTemplatePath, "node_modules"));
196-
197-
let typescriptTemplateDir = temp.mkdirSync("typescriptTemplate");
198-
fs.writeJson(path.join(typescriptTemplateDir, "package.json"), {
199-
"name": "typescriptTemplate",
200-
"version": "1.0.0",
201-
"description": "dummy",
202-
"license": "MIT",
203-
"readme": "dummy",
204-
"repository": "dummy"
205-
});
206-
207-
await npmInstallationManager.install(constants.RESERVED_TEMPLATE_NAMES["typescript"], typescriptTemplateDir, { dependencyType: "save" });
208-
typescriptTemplatePath = path.join(typescriptTemplateDir, "node_modules", constants.RESERVED_TEMPLATE_NAMES["typescript"]);
209-
210-
fs.deleteDirectory(path.join(typescriptTemplatePath, "node_modules"));
211-
let noAppResourcesTemplateDir = temp.mkdirSync("noAppResources");
212-
fs.writeJson(path.join(noAppResourcesTemplateDir, "package.json"), {
213-
"name": "blankTemplate",
214-
"version": "1.0.0",
215-
"description": "dummy",
216-
"license": "MIT",
217-
"readme": "dummy",
218-
"repository": "dummy"
219-
});
220-
221-
await npmInstallationManager.install(noAppResourcesTemplateName, noAppResourcesTemplateDir, {
222-
dependencyType: "save",
223-
version: "2.0.0"
224-
});
225-
noAppResourcesTemplatePath = path.join(noAppResourcesTemplateDir, "node_modules", noAppResourcesTemplateName);
226172

227-
fs.deleteDirectory(path.join(noAppResourcesTemplatePath, "node_modules"));
173+
defaultTemplatePath = await prepareTestingPath(projectIntegrationTest.testInjector, constants.RESERVED_TEMPLATE_NAMES["default"], constants.RESERVED_TEMPLATE_NAMES["default"]);
174+
defaultSpecificVersionTemplatePath = await prepareTestingPath(projectIntegrationTest.testInjector, constants.RESERVED_TEMPLATE_NAMES["default"], constants.RESERVED_TEMPLATE_NAMES["default"], { version: "1.4.0", dependencyType: "save" });
175+
angularTemplatePath = await prepareTestingPath(projectIntegrationTest.testInjector, constants.RESERVED_TEMPLATE_NAMES["angular"], constants.RESERVED_TEMPLATE_NAMES["angular"]);
176+
typescriptTemplatePath = await prepareTestingPath(projectIntegrationTest.testInjector, constants.RESERVED_TEMPLATE_NAMES["typescript"], constants.RESERVED_TEMPLATE_NAMES["typescript"]);
177+
noAppResourcesTemplatePath = await prepareTestingPath(projectIntegrationTest.testInjector, noAppResourcesTemplateName, noAppResourcesTemplateName, { dependencyType: "save", version: "2.0.0" });
228178
});
229179

230180
it("creates valid project from default template", async () => {
@@ -340,28 +290,32 @@ describe("Project Service Tests", () => {
340290
let projectIntegrationTest = new ProjectIntegrationTest();
341291
let tempFolder = temp.mkdirSync("projectLocalDir");
342292
let projectName = "myapp";
293+
const template = "https://github.com/NativeScript/template-hello-world/tarball/master";
343294

344295
await projectIntegrationTest.createProject({
345296
projectName: projectName,
346-
template: "https://github.com/NativeScript/template-hello-world/tarball/master",
297+
template,
347298
pathToProject: tempFolder
348299
});
349300

350-
await projectIntegrationTest.assertProject(tempFolder, projectName, "org.nativescript.myapp", defaultTemplatePath);
301+
const projectSourceDirectory = await prepareTestingPath(projectIntegrationTest.testInjector, template, constants.RESERVED_TEMPLATE_NAMES["default"]);
302+
await projectIntegrationTest.assertProject(tempFolder, projectName, "org.nativescript.myapp", projectSourceDirectory);
351303
});
352304

353305
it("creates valid project from git url", async () => {
354306
let projectIntegrationTest = new ProjectIntegrationTest();
355307
let tempFolder = temp.mkdirSync("projectLocalDir");
356308
let projectName = "myapp";
309+
const template = "https://github.com/NativeScript/template-hello-world.git";
357310

358311
await projectIntegrationTest.createProject({
359312
projectName: projectName,
360-
template: "https://github.com/NativeScript/template-hello-world.git",
313+
template,
361314
pathToProject: tempFolder
362315
});
363316

364-
await projectIntegrationTest.assertProject(tempFolder, projectName, "org.nativescript.myapp", defaultTemplatePath);
317+
const projectSourceDirectory = await prepareTestingPath(projectIntegrationTest.testInjector, template, constants.RESERVED_TEMPLATE_NAMES["default"]);
318+
await projectIntegrationTest.assertProject(tempFolder, projectName, "org.nativescript.myapp", projectSourceDirectory);
365319
});
366320

367321
it("creates valid project with specified id from default template", async () => {

0 commit comments

Comments
 (0)