From b5777cc0a497cbeb5644f54b599843b74d81e260 Mon Sep 17 00:00:00 2001 From: Tobias Sorn Date: Thu, 20 Aug 2020 15:02:38 +0200 Subject: [PATCH 1/4] [INTERNAL] add tests fix naming in manifest.json file of library H --- .../dest/resources/library/h/.library | 2 +- .../dest/resources/library/h/manifest.json | 4 +- .../library.h/main/src/library/h/.library | 2 +- test/lib/lbt/resources/ModuleInfo.js | 63 +++++++++++++++++++ test/lib/types/library/LibraryBuilder.js | 54 ++++++++++++++++ .../types/themeLibrary/ThemeLibraryBuilder.js | 46 ++++++++++++++ 6 files changed, 167 insertions(+), 4 deletions(-) create mode 100644 test/lib/lbt/resources/ModuleInfo.js create mode 100644 test/lib/types/library/LibraryBuilder.js create mode 100644 test/lib/types/themeLibrary/ThemeLibraryBuilder.js diff --git a/test/expected/build/library.h/dest/resources/library/h/.library b/test/expected/build/library.h/dest/resources/library/h/.library index 5bdab13ab..9084728e8 100644 --- a/test/expected/build/library.h/dest/resources/library/h/.library +++ b/test/expected/build/library.h/dest/resources/library/h/.library @@ -6,7 +6,7 @@ Some fancy copyright 1.0.0 - Library D + Library H diff --git a/test/expected/build/library.h/dest/resources/library/h/manifest.json b/test/expected/build/library.h/dest/resources/library/h/manifest.json index 2e67ab58d..2b6c457ad 100644 --- a/test/expected/build/library.h/dest/resources/library/h/manifest.json +++ b/test/expected/build/library.h/dest/resources/library/h/manifest.json @@ -12,8 +12,8 @@ "applicationVersion": { "version": "1.0.0" }, - "title": "Library D", - "description": "Library D", + "title": "Library H", + "description": "Library H", "resources": "resources.json", "offline": true }, diff --git a/test/fixtures/library.h/main/src/library/h/.library b/test/fixtures/library.h/main/src/library/h/.library index 797c61cc8..38501ff40 100644 --- a/test/fixtures/library.h/main/src/library/h/.library +++ b/test/fixtures/library.h/main/src/library/h/.library @@ -6,7 +6,7 @@ Some fancy copyright ${version} - Library D + Library H diff --git a/test/lib/lbt/resources/ModuleInfo.js b/test/lib/lbt/resources/ModuleInfo.js new file mode 100644 index 000000000..9ecc16569 --- /dev/null +++ b/test/lib/lbt/resources/ModuleInfo.js @@ -0,0 +1,63 @@ +const test = require("ava"); + +const ModuleInfo = require("../../../../lib/lbt/resources/ModuleInfo"); + +test("ModuleInfo: constructor", async (t) => { + const moduleInfo = new ModuleInfo("myName"); + t.falsy(moduleInfo.exposedGlobals, "exposedGlobals is not set"); + t.falsy(moduleInfo.format, "format is not set"); + t.falsy(moduleInfo.description, "description is not set"); + t.false(moduleInfo.requiresTopLevelScope, "requiresTopLevelScope is false"); + t.false(moduleInfo.rawModule, "rawModule is false"); + t.false(moduleInfo.dynamicDependencies, "dynamicDependencies is false"); + t.deepEqual(moduleInfo.subModules, [], "submodules are empty"); +}); + +test("ModuleInfo: addSubModule", async (t) => { + // setup + const moduleInfo = new ModuleInfo("myName"); + moduleInfo.addDependency("otherModule", false); + const otherModuleInfo = new ModuleInfo("otherModule"); + otherModuleInfo.addDependency("unknownModule", false); + otherModuleInfo.dynamicDependencies = true; + + // action + moduleInfo.addSubModule(otherModuleInfo); + + // expectation + t.true(moduleInfo.dynamicDependencies, "dynamicDependencies is set"); + t.deepEqual(moduleInfo.subModules, ["otherModule"], "submodule is set"); + t.deepEqual(moduleInfo.dependencies, ["unknownModule"], "unknownModule dependency is copied over"); +}); + +test("ModuleInfo: name", async (t) => { + // setup + const moduleInfo = new ModuleInfo("myName"); + + // action + moduleInfo.addDependency("newName", false); + moduleInfo.name = "newName"; + + moduleInfo.addSubModule("newName2"); + moduleInfo.name = "newName2"; + + // expectation + t.deepEqual(moduleInfo.subModules, [], "submodule is empty"); + t.deepEqual(moduleInfo.dependencies, [], "dependencies is empty"); + t.is(moduleInfo.name, "newName2", "name was set"); +}); + +test("ModuleInfo: toString", async (t) => { + // setup + const moduleInfo = new ModuleInfo("myName"); + + // action + moduleInfo.addDependency("dep1", false); + moduleInfo.addDependency("dep2", false); + moduleInfo.addSubModule("sub1"); + moduleInfo.addSubModule("sub2"); + const stringContent = moduleInfo.toString(); + + // expectation + t.is(stringContent, "ModuleInfo(myName, dependencies=dep1,dep2, includes=sub1,sub2)", "string value is correct"); +}); diff --git a/test/lib/types/library/LibraryBuilder.js b/test/lib/types/library/LibraryBuilder.js new file mode 100644 index 000000000..5cadb807a --- /dev/null +++ b/test/lib/types/library/LibraryBuilder.js @@ -0,0 +1,54 @@ +const test = require("ava"); +const path = require("path"); + +const parentLogger = require("@ui5/logger").getGroupLogger("mygroup"); + +const LibraryBuilder = require("../../../../lib/types/library/LibraryBuilder"); + +function clone(o) { + return JSON.parse(JSON.stringify(o)); +} + +test("Instantiation", (t) => { + const project = clone(libraryETree); + const appBuilder = new LibraryBuilder({parentLogger, project}); + t.truthy(appBuilder); + t.deepEqual(appBuilder.taskExecutionOrder, [ + "escapeNonAsciiCharacters", + "replaceCopyright", + "replaceVersion", + "generateJsdoc", + "executeJsdocSdkTransformation", + "generateLibraryManifest", + "generateManifestBundle", + "generateLibraryPreload", + "buildThemes", + "createDebugFiles", + "uglify" + ], "LibraryBuilder is instantiated with standard tasks"); +}); + +const libraryEPath = path.join(__dirname, "..", "..", "..", "fixtures", "library.e"); +const libraryETree = { + id: "library.e.id", + version: "1.0.0", + path: libraryEPath, + dependencies: [], + _level: 0, + _isRoot: true, + specVersion: "2.0", + type: "library", + metadata: { + name: "library.e", + copyright: "some fancy copyright.", + namespace: "library.e" + }, + resources: { + configuration: { + paths: { + src: "src", + test: "test" + } + } + } +}; diff --git a/test/lib/types/themeLibrary/ThemeLibraryBuilder.js b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js new file mode 100644 index 000000000..ec573cd38 --- /dev/null +++ b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js @@ -0,0 +1,46 @@ +const test = require("ava"); + +const ThemeLibraryBuilder = require("../../../../lib/types/themeLibrary/ThemeLibraryBuilder"); + +test("tasks", async (t) => { + const themeLibraryBuilder = new ThemeLibraryBuilder({ + resourceCollections: { + workspace: { + byGlob: async () => { + return []; + } + } + }, + buildContext: { + isRootProject: () => { + return true; + } + }, + project: { + metadata: { + name: "name", + copyright: "copyright" + }, + type: "type" + }, + parentLogger: { + createSubLogger: () => { + return { + createTaskLogger: () => { + + } + }; + } + }, + taskUtil: { + isRootProject: () => { + return true; + } + } + }); + const asyncTasks = Object.keys(themeLibraryBuilder.tasks).map((taskKey) => { + return themeLibraryBuilder.tasks[taskKey](); + }); + + t.is(asyncTasks.length, 3, "all 3 tasks should be added"); +}); From f7794a0ddfd3c7ca909df901b98b14fcd7bde1de Mon Sep 17 00:00:00 2001 From: Tobias Sorn Date: Wed, 26 Aug 2020 14:15:00 +0200 Subject: [PATCH 2/4] adjust tests (after rebase) --- .../dest-resources-json/resources/library/h/.library | 2 +- .../dest-resources-json/resources/library/h/manifest.json | 4 ++-- test/lib/types/library/LibraryBuilder.js | 3 ++- test/lib/types/themeLibrary/ThemeLibraryBuilder.js | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test/expected/build/library.h/dest-resources-json/resources/library/h/.library b/test/expected/build/library.h/dest-resources-json/resources/library/h/.library index 5bdab13ab..9084728e8 100644 --- a/test/expected/build/library.h/dest-resources-json/resources/library/h/.library +++ b/test/expected/build/library.h/dest-resources-json/resources/library/h/.library @@ -6,7 +6,7 @@ Some fancy copyright 1.0.0 - Library D + Library H diff --git a/test/expected/build/library.h/dest-resources-json/resources/library/h/manifest.json b/test/expected/build/library.h/dest-resources-json/resources/library/h/manifest.json index 2e67ab58d..2b6c457ad 100644 --- a/test/expected/build/library.h/dest-resources-json/resources/library/h/manifest.json +++ b/test/expected/build/library.h/dest-resources-json/resources/library/h/manifest.json @@ -12,8 +12,8 @@ "applicationVersion": { "version": "1.0.0" }, - "title": "Library D", - "description": "Library D", + "title": "Library H", + "description": "Library H", "resources": "resources.json", "offline": true }, diff --git a/test/lib/types/library/LibraryBuilder.js b/test/lib/types/library/LibraryBuilder.js index 5cadb807a..e039a18d4 100644 --- a/test/lib/types/library/LibraryBuilder.js +++ b/test/lib/types/library/LibraryBuilder.js @@ -24,7 +24,8 @@ test("Instantiation", (t) => { "generateLibraryPreload", "buildThemes", "createDebugFiles", - "uglify" + "uglify", + "generateResourcesJson" ], "LibraryBuilder is instantiated with standard tasks"); }); diff --git a/test/lib/types/themeLibrary/ThemeLibraryBuilder.js b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js index ec573cd38..4f7e027ba 100644 --- a/test/lib/types/themeLibrary/ThemeLibraryBuilder.js +++ b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js @@ -42,5 +42,5 @@ test("tasks", async (t) => { return themeLibraryBuilder.tasks[taskKey](); }); - t.is(asyncTasks.length, 3, "all 3 tasks should be added"); + t.is(asyncTasks.length, 4, "all 3 tasks should be added"); }); From 43bcafbbe19904899f15442747cbc627231725e4 Mon Sep 17 00:00:00 2001 From: Tobias Sorn Date: Thu, 27 Aug 2020 09:19:52 +0200 Subject: [PATCH 3/4] adjusted test message --- test/lib/types/themeLibrary/ThemeLibraryBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/lib/types/themeLibrary/ThemeLibraryBuilder.js b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js index 4f7e027ba..ff99fe812 100644 --- a/test/lib/types/themeLibrary/ThemeLibraryBuilder.js +++ b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js @@ -42,5 +42,5 @@ test("tasks", async (t) => { return themeLibraryBuilder.tasks[taskKey](); }); - t.is(asyncTasks.length, 4, "all 3 tasks should be added"); + t.is(asyncTasks.length, 4, "all tasks should be added"); }); From d8e059000bb7a1567eb3e6bb56ecb37b1f2a2ad1 Mon Sep 17 00:00:00 2001 From: Matthias Osswald Date: Thu, 27 Aug 2020 12:43:54 +0200 Subject: [PATCH 4/4] Adopt test assertion --- .../types/themeLibrary/ThemeLibraryBuilder.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/test/lib/types/themeLibrary/ThemeLibraryBuilder.js b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js index ff99fe812..cf358458d 100644 --- a/test/lib/types/themeLibrary/ThemeLibraryBuilder.js +++ b/test/lib/types/themeLibrary/ThemeLibraryBuilder.js @@ -27,7 +27,11 @@ test("tasks", async (t) => { createSubLogger: () => { return { createTaskLogger: () => { - + return { + addWork: () => undefined, + startWork: () => undefined, + completeWork: () => undefined + }; } }; } @@ -38,9 +42,14 @@ test("tasks", async (t) => { } } }); - const asyncTasks = Object.keys(themeLibraryBuilder.tasks).map((taskKey) => { - return themeLibraryBuilder.tasks[taskKey](); - }); - t.is(asyncTasks.length, 4, "all tasks should be added"); + const taskNames = Object.keys(themeLibraryBuilder.tasks); + t.deepEqual(taskNames, [ + "replaceCopyright", + "replaceVersion", + "buildThemes", + "generateResourcesJson", + ], "Expected tasks have been added"); + + await themeLibraryBuilder.build(taskNames); });