mage-obsidian 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/jest.config.js +5 -0
- package/package.json +37 -0
- package/src/__tests__/__mocks__/configResolver.js +35 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameA/view/frontend/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameA/view/frontend/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameA/view/frontend/web/css/module.extend.css +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameA/view/frontend/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameA/view/frontend/web/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameA/view/frontend/web/module.config.cjs +9 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameB/view/frontend/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameB/view/frontend/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameB/view/frontend/web/css/module.extend.css +2 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameB/view/frontend/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameB/view/frontend/web/module.config.cjs +7 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameC/view/frontend/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameC/view/frontend/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameC/view/frontend/web/css/module.extend.css +2 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameC/view/frontend/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameC/view/frontend/web/module.config.cjs +7 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameA/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameA/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameA/web/css/module.extend.css +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameA/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameA/web/module.config.cjs +8 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameB/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameB/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameB/web/css/module.extend.css +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameB/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameB/web/module.config.cjs +7 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameNoConfig/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameNoConfig/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameNoConfig/web/css/module.extend.css +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameNoConfig/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/Vendor_ModuleNameNoConfig/web/module.config.cjs +8 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/web/css/tailwind.source.css +6 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/web/theme.config.cjs +18 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-b/web/css/tailwind.source.css +6 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-b/web/theme.config.cjs +22 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/Vendor_ModuleNameB/web/components/ComponentA.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/Vendor_ModuleNameB/web/components/ComponentB.vue +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/Vendor_ModuleNameB/web/css/module.extend.css +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/Vendor_ModuleNameB/web/js/main.js +0 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/Vendor_ModuleNameB/web/module.config.cjs +9 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/web/css/tailwind.source.css +6 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/web/theme.config.cjs +16 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-d/web/css/tailwind.source.css +6 -0
- package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-d/web/theme.config.cjs +14 -0
- package/src/__tests__/magento_scenarios/app/etc/mage_obsidian_frontend_modules_a.json +53 -0
- package/src/__tests__/magento_scenarios/app/etc/mage_obsidian_frontend_modules_b.json +50 -0
- package/src/__tests__/service/inheritModuleResolver.test.js +69 -0
- package/src/__tests__/service/moduleResolver.test.js +192 -0
- package/src/__tests__/service/moduleResolverSync.test.js +187 -0
- package/src/__tests__/service/themeResolverSync.test.js +164 -0
- package/src/config/default.cjs +41 -0
- package/src/scripts/buildThemes.js +131 -0
- package/src/service/configResolver.cjs +39 -0
- package/src/service/cssResolver.js +55 -0
- package/src/service/inheritModuleResolver.js +57 -0
- package/src/service/magentoHrmRewrite.js +24 -0
- package/src/service/moduleResolver.js +103 -0
- package/src/service/moduleResolverSync.cjs +84 -0
- package/src/service/preCompileFiles.js +37 -0
- package/src/service/preCompileMagentoFiles.js +16 -0
- package/src/service/setupGlobals.js +19 -0
- package/src/service/tailwindResolver.cjs +15 -0
- package/src/service/themeResolverSync.cjs +80 -0
- package/src/templates/base_main_js_file.js +5 -0
- package/src/utils/findComponents.js +70 -0
package/jest.config.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mage-obsidian",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Mage Obsidian Ultis",
|
|
5
|
+
"main": "./src/scripts/buildThemes.js",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"Magento",
|
|
8
|
+
"MageObsidian"
|
|
9
|
+
],
|
|
10
|
+
"author": "Jeanmarcos Juarez",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"bin": {
|
|
14
|
+
"mage-obsidian:build-themes": "./src/scripts/buildThemes.js"
|
|
15
|
+
},
|
|
16
|
+
"imports": {
|
|
17
|
+
"#utils/*": "./src/utils/*",
|
|
18
|
+
"#config/*": "./src/config/*",
|
|
19
|
+
"#service/*": "./src/service/*"
|
|
20
|
+
},
|
|
21
|
+
"exports": {
|
|
22
|
+
".": "./src/scripts/buildThemes.js",
|
|
23
|
+
"./service/": "./src/service/",
|
|
24
|
+
"./utils/": "./src/utils/",
|
|
25
|
+
"./config/": "./src/config/"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"chalk": "^5.3.0",
|
|
29
|
+
"deepmerge": "^4.3.1",
|
|
30
|
+
"jest": "^29.7.0",
|
|
31
|
+
"jest-environment-node": "^29.7.0",
|
|
32
|
+
"readline-sync": "^1.4.10"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import { jest } from '@jest/globals';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
|
|
9
|
+
const createMockConfigResolver = (scenario) => {
|
|
10
|
+
const configPath = path.resolve(__dirname, `../magento_scenarios/app/etc/mage_obsidian_frontend_modules_${scenario}.json`);
|
|
11
|
+
const magentoConfigJson = fs.readFileSync(configPath, 'utf-8');
|
|
12
|
+
const mockMagentoConfig = JSON.parse(magentoConfigJson);
|
|
13
|
+
for (const key in mockMagentoConfig.modules) {
|
|
14
|
+
let module = mockMagentoConfig.modules[key];
|
|
15
|
+
module.src = path.resolve(__dirname, '..', module.src);
|
|
16
|
+
}
|
|
17
|
+
for (const key in mockMagentoConfig.themes) {
|
|
18
|
+
let theme = mockMagentoConfig.themes[key];
|
|
19
|
+
theme.src = path.resolve(__dirname, '..', theme.src);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
default: {
|
|
23
|
+
getMagentoConfig: jest.fn(() => mockMagentoConfig),
|
|
24
|
+
getModulesConfigArray: jest.fn(() => Object.entries(mockMagentoConfig.modules)),
|
|
25
|
+
getThemesConfigArray: jest.fn(() => Object.entries(mockMagentoConfig.themes)),
|
|
26
|
+
getAllMagentoModulesEnabled: jest.fn(() => mockMagentoConfig.allModules),
|
|
27
|
+
isDev: jest.fn(() => mockMagentoConfig.mode === 'development'),
|
|
28
|
+
getOutputDirFromTheme: jest.fn((themePath) => `${themePath}/output`),
|
|
29
|
+
getThemeDefinition: jest.fn((themeName) => mockMagentoConfig.themes[themeName]),
|
|
30
|
+
getModuleDefinition: jest.fn((moduleName) => mockMagentoConfig.modules[moduleName]),
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export default createMockConfigResolver;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameA/view/frontend/web/js/main.js
ADDED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameB/view/frontend/web/js/main.js
ADDED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/__tests__/magento_scenarios/app/code/Vendor/ModuleNameC/view/frontend/web/js/main.js
ADDED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-a/web/theme.config.cjs
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
tailwind: {
|
|
3
|
+
theme: {
|
|
4
|
+
extend: {
|
|
5
|
+
},
|
|
6
|
+
},
|
|
7
|
+
plugins: [],
|
|
8
|
+
content: [
|
|
9
|
+
'./**/*.{vue,js}',
|
|
10
|
+
'../**/*.phtml',
|
|
11
|
+
'../*/page_layout/override/base/*.xml',
|
|
12
|
+
],
|
|
13
|
+
},
|
|
14
|
+
ignoredTailwindConfigFromModules: [],
|
|
15
|
+
ignoredCssFromModules: [
|
|
16
|
+
'Vendor_ModuleNameA'
|
|
17
|
+
]
|
|
18
|
+
}
|
package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-b/web/theme.config.cjs
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
tailwind: {
|
|
3
|
+
theme: {
|
|
4
|
+
extend: {
|
|
5
|
+
textColor: {
|
|
6
|
+
'primary': '#3490dc',
|
|
7
|
+
'secondary': '#ffed4a',
|
|
8
|
+
'danger': '#e3342f',
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
plugins: [],
|
|
13
|
+
content: [
|
|
14
|
+
'./**/*.{vue,js}',
|
|
15
|
+
'../**/*.phtml',
|
|
16
|
+
'../*/page_layout/override/base/*.xml',
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
ignoredCssFromModules: [
|
|
20
|
+
'Vendor_ModuleNameNoConfig'
|
|
21
|
+
]
|
|
22
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/__tests__/magento_scenarios/app/design/frontend/Vendor/theme-c/web/theme.config.cjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
tailwind: {
|
|
3
|
+
theme: {
|
|
4
|
+
extend: {
|
|
5
|
+
},
|
|
6
|
+
},
|
|
7
|
+
plugins: [],
|
|
8
|
+
content: [
|
|
9
|
+
'./**/*.{vue,js}',
|
|
10
|
+
'../**/*.phtml',
|
|
11
|
+
'../*/page_layout/override/base/*.xml',
|
|
12
|
+
],
|
|
13
|
+
},
|
|
14
|
+
includeTailwindConfigFromParentThemes: false,
|
|
15
|
+
ignoredTailwindConfigFromModules: 'all'
|
|
16
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modules": {
|
|
3
|
+
"Vendor_ModuleNameA": {
|
|
4
|
+
"src": "magento_scenarios\/app\/code\/Vendor\/ModuleNameA"
|
|
5
|
+
},
|
|
6
|
+
"Vendor_ModuleNameB": {
|
|
7
|
+
"src": "magento_scenarios\/app\/code\/Vendor\/ModuleNameB"
|
|
8
|
+
},
|
|
9
|
+
"Vendor_ModuleNameC": {
|
|
10
|
+
"src": "magento_scenarios\/app\/code\/Vendor\/ModuleNameC"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"themes": {
|
|
14
|
+
"Vendor\/theme-a": {
|
|
15
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-a",
|
|
16
|
+
"parent": null
|
|
17
|
+
},
|
|
18
|
+
"Vendor\/theme-b": {
|
|
19
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-b",
|
|
20
|
+
"parent": "Vendor\/theme-a"
|
|
21
|
+
},
|
|
22
|
+
"Vendor\/theme-c": {
|
|
23
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-c",
|
|
24
|
+
"parent": "Vendor\/theme-b"
|
|
25
|
+
},
|
|
26
|
+
"Vendor\/theme-d": {
|
|
27
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-d",
|
|
28
|
+
"parent": null
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"allModules": [
|
|
32
|
+
"Vendor_ModuleNameA",
|
|
33
|
+
"Vendor_ModuleNameB",
|
|
34
|
+
"Vendor_ModuleNameC"
|
|
35
|
+
],
|
|
36
|
+
"VUE_COMPONENTS_PATH": "components",
|
|
37
|
+
"JS_PATH": "js",
|
|
38
|
+
"FOLDERS_TO_WATCH": [
|
|
39
|
+
"components",
|
|
40
|
+
"js"
|
|
41
|
+
],
|
|
42
|
+
"ALLOWED_EXTENSIONS": [
|
|
43
|
+
"js",
|
|
44
|
+
"vue",
|
|
45
|
+
"cjs",
|
|
46
|
+
"ts"
|
|
47
|
+
],
|
|
48
|
+
"MODULE_CSS_EXTEND_FILE": "module.extend.css",
|
|
49
|
+
"MODULE_CONFIG_FILE": "module.config.cjs",
|
|
50
|
+
"THEME_CONFIG_FILE": "theme.config.cjs",
|
|
51
|
+
"THEME_TAILWIND_SOURCE_FILE": "tailwind.source.css",
|
|
52
|
+
"LIB_PATH": "lib"
|
|
53
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modules": {
|
|
3
|
+
"Vendor_ModuleNameA": {
|
|
4
|
+
"src": "magento_scenarios\/app\/code\/Vendor\/ModuleNameA"
|
|
5
|
+
},
|
|
6
|
+
"Vendor_ModuleNameC": {
|
|
7
|
+
"src": "magento_scenarios\/app\/code\/Vendor\/ModuleNameC"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"themes": {
|
|
11
|
+
"Vendor\/theme-a": {
|
|
12
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-a",
|
|
13
|
+
"parent": null
|
|
14
|
+
},
|
|
15
|
+
"Vendor\/theme-b": {
|
|
16
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-b",
|
|
17
|
+
"parent": "Vendor\/theme-a"
|
|
18
|
+
},
|
|
19
|
+
"Vendor\/theme-c": {
|
|
20
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-c",
|
|
21
|
+
"parent": "Vendor\/theme-b"
|
|
22
|
+
},
|
|
23
|
+
"Vendor\/theme-d": {
|
|
24
|
+
"src": "magento_scenarios\/app\/design\/frontend\/Vendor\/theme-d",
|
|
25
|
+
"parent": null
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"allModules": [
|
|
29
|
+
"Vendor_ModuleNameA",
|
|
30
|
+
"Vendor_ModuleNameB",
|
|
31
|
+
"Vendor_ModuleNameNoConfig"
|
|
32
|
+
],
|
|
33
|
+
"VUE_COMPONENTS_PATH": "components",
|
|
34
|
+
"JS_PATH": "js",
|
|
35
|
+
"FOLDERS_TO_WATCH": [
|
|
36
|
+
"components",
|
|
37
|
+
"js"
|
|
38
|
+
],
|
|
39
|
+
"ALLOWED_EXTENSIONS": [
|
|
40
|
+
"js",
|
|
41
|
+
"vue",
|
|
42
|
+
"cjs",
|
|
43
|
+
"ts"
|
|
44
|
+
],
|
|
45
|
+
"MODULE_CSS_EXTEND_FILE": "module.extend.css",
|
|
46
|
+
"MODULE_CONFIG_FILE": "module.config.cjs",
|
|
47
|
+
"THEME_CONFIG_FILE": "theme.config.cjs",
|
|
48
|
+
"THEME_TAILWIND_SOURCE_FILE": "tailwind.source.css",
|
|
49
|
+
"LIB_PATH": "lib"
|
|
50
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jest } from '@jest/globals';
|
|
2
|
+
import createMockConfigResolver from '../__mocks__/configResolver.js';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
|
|
9
|
+
let scenarios = [
|
|
10
|
+
{
|
|
11
|
+
scenario: 'a',
|
|
12
|
+
themes: [
|
|
13
|
+
{ code: 'Vendor/theme-a', codeImport: 'Vendor_ModuleNameA::js/test', expected: '/TEST/web/js/test.js' },
|
|
14
|
+
{ code: 'Vendor/theme-a', codeImport: 'Vendor_ModuleNameA::js/test.vue', expected: '/TEST/web/js/test.js' },
|
|
15
|
+
{ code: 'Vendor/theme-a', codeImport: 'Vendor_ModuleNameA::js/test.css', expected: undefined },
|
|
16
|
+
{ code: 'Vendor/theme-a', codeImport: 'Vendor_ModuleNameB::js/test', expected: undefined },
|
|
17
|
+
{ code: 'Vendor/theme-a', codeImport: null, expected: undefined },
|
|
18
|
+
{ code: 'Vendor/theme-b', codeImport: 'Vendor_ModuleNameA::js/unknown', expected: undefined }
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
function mockConfigAndModules(scenario) {
|
|
24
|
+
jest.mock(
|
|
25
|
+
'#service/configResolver.cjs',
|
|
26
|
+
() => createMockConfigResolver(scenario).default
|
|
27
|
+
);
|
|
28
|
+
jest.unstable_mockModule(
|
|
29
|
+
'#service/moduleResolver.js',
|
|
30
|
+
() => ({
|
|
31
|
+
default: {
|
|
32
|
+
getAllJsVueFilesWithInheritanceCached: jest.fn(() => ({
|
|
33
|
+
'Vendor_ModuleNameA/js/test': '/TEST/web/js/test.js',
|
|
34
|
+
})),
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function setupInheritModuleResolver(scenario) {
|
|
41
|
+
mockConfigAndModules(scenario);
|
|
42
|
+
const resolver = await import('#service/inheritModuleResolver.js');
|
|
43
|
+
return resolver.default();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
describe('inherit-resolver', () => {
|
|
47
|
+
let inheritModuleResolver;
|
|
48
|
+
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
jest.resetModules();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test.each(scenarios.flatMap(({ scenario, themes }) =>
|
|
54
|
+
themes.map(({ code, codeImport, expected }) => ([scenario, code, codeImport, expected]))
|
|
55
|
+
))('Scenario "%s", Theme "%s", Import "%s"', async (scenario, code, codeImport, expected) => {
|
|
56
|
+
process.env.CURRENT_THEME = code;
|
|
57
|
+
inheritModuleResolver = await setupInheritModuleResolver(scenario);
|
|
58
|
+
const result = await inheritModuleResolver.resolveId.handler(codeImport);
|
|
59
|
+
|
|
60
|
+
expect(result).toEqual(
|
|
61
|
+
expected,
|
|
62
|
+
`Scenario: "${scenario}"
|
|
63
|
+
Theme: "${code}"
|
|
64
|
+
Import: "${codeImport}"
|
|
65
|
+
Expected: ${JSON.stringify(expected, null, 2)}
|
|
66
|
+
Received: ${JSON.stringify(result, null, 2)}`
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
});
|