diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java index d2add283736..79635d3e276 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.angular.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.ANGULAR; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModule; diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java index 7231399175a..bdb1f695a98 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java @@ -1,13 +1,13 @@ package tech.jhipster.lite.generator.client.angular.security.oauth2.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; import java.util.regex.Pattern; import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.module.domain.replacement.ElementReplacer; import tech.jhipster.lite.module.domain.replacement.RegexReplacer; @@ -114,7 +114,7 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) { //@formatter:off return moduleBuilder(properties) .packageJson() - .addDependency(packageName("keycloak-js"), VersionSource.ANGULAR) + .addDependency(packageName("keycloak-js"), ANGULAR) .and() .files() .batch(SOURCE.append("auth"), APP_DESTINATION.append("auth")) diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java index 2879f7d25bf..4b750dddee4 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java @@ -1,9 +1,9 @@ package tech.jhipster.lite.generator.client.react.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.REACT; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.MODULE; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.REACT; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java index c7043fcb28f..3acbf379247 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java @@ -1,10 +1,11 @@ package tech.jhipster.lite.generator.client.react.i18n.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.REACT; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.shared.error.domain.Assert; @@ -23,10 +24,10 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) { //@formatter:off return moduleBuilder(properties) .packageJson() - .addDependency(packageName("i18next"), VersionSource.COMMON) - .addDependency(packageName("i18next-browser-languagedetector"), VersionSource.COMMON) - .addDependency(packageName("i18next-http-backend"), VersionSource.COMMON) - .addDependency(packageName("react-i18next"), VersionSource.REACT) + .addDependency(packageName("i18next"), COMMON) + .addDependency(packageName("i18next-browser-languagedetector"), COMMON) + .addDependency(packageName("i18next-http-backend"), COMMON) + .addDependency(packageName("react-i18next"), REACT) .and() .files() .batch(APP_SOURCE, to(INDEX + "/app")) diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java index 35efb70b4bc..e87cfaf9c56 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.react.security.jwt.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.REACT; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.REACT; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java index 67902e21b29..16e8224959a 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.svelte.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.SVELTE; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.SVELTE; import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModule; diff --git a/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java index f42fa84cd75..e7e691b4b83 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java @@ -1,13 +1,13 @@ package tech.jhipster.lite.generator.client.tools.cypress.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import java.util.function.Function; import java.util.regex.Pattern; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.module.domain.replacement.RegexReplacer; import tech.jhipster.lite.shared.error.domain.Assert; @@ -48,7 +48,7 @@ public JHipsterModule buildComponentTestsModule(JHipsterModuleProperties propert //@formatter:off return commonCypressModuleBuilder(properties, CYPRESS_COMPONENT_TESTS, CYPRESS_COMPONENT_TESTS_EXCLUSION) .packageJson() - .addDevDependency(packageName("start-server-and-test"), VersionSource.COMMON) + .addDevDependency(packageName("start-server-and-test"), COMMON) .addScript(scriptKey("test:component"), scriptCommand("start-server-and-test start http://localhost:9000 'cypress open --e2e --config-file src/test/webapp/component/cypress-config.ts'")) .addScript( scriptKey("test:component:headless"), @@ -86,8 +86,8 @@ private static JHipsterModuleBuilder commonCypressModuleBuilder( //@formatter:off return moduleBuilder(properties) .packageJson() - .addDevDependency(packageName("cypress"), VersionSource.COMMON) - .addDevDependency(packageName("eslint-plugin-cypress"), VersionSource.COMMON) + .addDevDependency(packageName("cypress"), COMMON) + .addDevDependency(packageName("eslint-plugin-cypress"), COMMON) .and() .files() .batch(SOURCE, destinationFolder) diff --git a/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java index 4246d5ec920..2fc881a0f9e 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java @@ -1,11 +1,11 @@ package tech.jhipster.lite.generator.client.tools.playwright.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.shared.error.domain.Assert; @@ -23,7 +23,7 @@ public JHipsterModule buildComponentTestsModule(JHipsterModuleProperties propert //@formatter:off return commonPlaywrightModuleBuilder(properties, WEBAPP_COMPONENT_TESTS) .packageJson() - .addDevDependency(packageName("start-server-and-test"), VersionSource.COMMON) + .addDevDependency(packageName("start-server-and-test"), COMMON) .addScript(scriptKey("test:component"), scriptCommand("start-server-and-test start http://localhost:9000 'playwright test --ui --config src/test/webapp/component/playwright.config.ts'")) .addScript(scriptKey("test:component:headless"), scriptCommand("start-server-and-test start http://localhost:9000 'playwright test --config src/test/webapp/component/playwright.config.ts'")) .and() @@ -59,7 +59,7 @@ private static JHipsterModuleBuilder commonPlaywrightModuleBuilder( //@formatter:off return moduleBuilder(properties) .packageJson() - .addDevDependency(packageName("@playwright/test"), VersionSource.COMMON) + .addDevDependency(packageName("@playwright/test"), COMMON) .and() .files() .add(SOURCE.template("playwright.config.ts"), destinationFolder.append("playwright.config.ts")) diff --git a/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java b/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java index 39055c1524c..77f369b75fa 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.vue.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.VUE; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.VUE; import static tech.jhipster.lite.module.domain.replacement.ReplacementCondition.notContainingReplacement; import java.util.function.Consumer; diff --git a/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java index 5153202ced2..94d7aa31953 100644 --- a/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java @@ -1,7 +1,7 @@ package tech.jhipster.lite.generator.init.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java index d8898df0064..853174848dc 100644 --- a/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java @@ -1,7 +1,7 @@ package tech.jhipster.lite.generator.prettier.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java index 0ff1c99aee1..a8e41b730d0 100644 --- a/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java @@ -8,7 +8,7 @@ import tech.jhipster.lite.module.domain.file.JHipsterSource; import tech.jhipster.lite.module.domain.gradleplugin.GradleMainBuildPlugin; import tech.jhipster.lite.module.domain.mavenplugin.MavenPlugin; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; +import tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource; import tech.jhipster.lite.module.domain.npm.NpmVersions; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.shared.error.domain.Assert; @@ -33,7 +33,7 @@ public JHipsterModule buildFrontendMavenModule(JHipsterModuleProperties properti return commonModuleFiles(properties) .javaBuildProperties() .set(buildPropertyKey("node.version"), buildPropertyValue("v" + npmVersions.nodeVersion().get())) - .set(buildPropertyKey("npm.version"), buildPropertyValue(npmVersions.get("npm", NpmVersionSource.COMMON).get())) + .set(buildPropertyKey("npm.version"), buildPropertyValue(npmVersions.get("npm", JHLiteNpmVersionSource.COMMON).get())) .and() .mavenPlugins() .plugin(checksumPlugin()) @@ -169,7 +169,7 @@ public JHipsterModule buildFrontendGradleModule(JHipsterModuleProperties propert return commonModuleFiles(properties) .javaBuildProperties() .set(buildPropertyKey("node.version.value"), buildPropertyValue(npmVersions.nodeVersion().get())) - .set(buildPropertyKey("npm.version.value"), buildPropertyValue(npmVersions.get("npm", NpmVersionSource.COMMON).get())) + .set(buildPropertyKey("npm.version.value"), buildPropertyValue(npmVersions.get("npm", JHLiteNpmVersionSource.COMMON).get())) .and() .gradlePlugins() .plugin(frontendGradlePlugin()) diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java index e86a339c3f8..cc40e203578 100644 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java @@ -1,7 +1,7 @@ package tech.jhipster.lite.generator.server.springboot.thymeleaf.template.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import java.util.regex.Pattern; import tech.jhipster.lite.module.domain.JHipsterModule; diff --git a/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java index 846154ab34e..66bcdde1ef2 100644 --- a/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.typescript.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.MODULE; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterSource; diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java new file mode 100644 index 00000000000..3c0760ddf41 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java @@ -0,0 +1,23 @@ +package tech.jhipster.lite.module.domain.npm; + +/** + * {@link NpmVersionSource} that are handled by JHipster Lite. + */ +public enum JHLiteNpmVersionSource implements NpmVersionSourceFactory { + COMMON("common"), + ANGULAR("angular"), + REACT("react"), + SVELTE("svelte"), + VUE("vue"); + + private final String source; + + JHLiteNpmVersionSource(String source) { + this.source = source; + } + + @Override + public NpmVersionSource build() { + return new NpmVersionSource(source); + } +} diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java index d58e73c5018..487fdedc273 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java @@ -1,6 +1,7 @@ package tech.jhipster.lite.module.domain.npm; import tech.jhipster.lite.shared.error.domain.Assert; +import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; public record NpmPackageVersion(String version) { public NpmPackageVersion { @@ -14,4 +15,10 @@ public String get() { public String majorVersion() { return version().split("\\.")[0]; } + + @Override + @ExcludeFromGeneratedCodeCoverage + public String toString() { + return version; + } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java index fcd27f0e4c4..f1e0f159dfd 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java @@ -1,9 +1,14 @@ package tech.jhipster.lite.module.domain.npm; -public enum NpmVersionSource { - COMMON, - ANGULAR, - REACT, - SVELTE, - VUE, +import tech.jhipster.lite.shared.error.domain.Assert; + +public record NpmVersionSource(String name) { + public NpmVersionSource { + Assert.notBlank("name", name); + } + + @Override + public String toString() { + return name; + } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSourceFactory.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSourceFactory.java new file mode 100644 index 00000000000..1d3c0d3df40 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSourceFactory.java @@ -0,0 +1,6 @@ +package tech.jhipster.lite.module.domain.npm; + +@FunctionalInterface +public interface NpmVersionSourceFactory { + NpmVersionSource build(); +} diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java index 054903c628c..51a9768313e 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java @@ -41,10 +41,25 @@ default NpmPackageVersion get(String packageName, NpmVersionSource source) { return get(new NpmPackageName(packageName), source); } + /** + * Get the npm package version from the given source + * + * @param packageName + * name of the package to get the version for + * @param source + * source folder for this version + * @return The version + * @throws UnknownNpmPackageException + * is the package can't be found in source + */ + default NpmPackageVersion get(String packageName, NpmVersionSourceFactory source) { + return get(packageName, source.build()); + } + /** * @return The version of Node.js. */ default NpmPackageVersion nodeVersion() { - return get("node", NpmVersionSource.COMMON); + return get("node", JHLiteNpmVersionSource.COMMON.build()); } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java index 5654bbfc295..c326253607e 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java +++ b/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java @@ -3,6 +3,7 @@ import java.util.*; import java.util.stream.Stream; import tech.jhipster.lite.module.domain.JHipsterModule.JHipsterModuleBuilder; +import tech.jhipster.lite.module.domain.npm.NpmVersionSourceFactory; import tech.jhipster.lite.shared.error.domain.Assert; /** @@ -103,8 +104,8 @@ public JHipsterModulePackageJsonBuilder addScript(ScriptKey key, ScriptCommand c * @param versionSource the version source * @return the builder itself */ - public JHipsterModulePackageJsonBuilder addDependency(PackageName packageName, VersionSource versionSource) { - dependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).build()); + public JHipsterModulePackageJsonBuilder addDependency(PackageName packageName, NpmVersionSourceFactory versionSource) { + dependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource.build()).build()); return this; } @@ -119,11 +120,15 @@ public JHipsterModulePackageJsonBuilder addDependency(PackageName packageName, V */ public JHipsterModulePackageJsonBuilder addDependency( PackageName packageName, - VersionSource versionSource, + NpmVersionSourceFactory versionSource, PackageName versionPackageName ) { dependencies.add( - PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).versionPackageName(versionPackageName).build() + PackageJsonDependency.builder() + .packageName(packageName) + .versionSource(versionSource.build()) + .versionPackageName(versionPackageName) + .build() ); return this; @@ -148,8 +153,8 @@ public JHipsterModulePackageJsonBuilder removeDependency(PackageName packageName * @param versionSource the version source * @return the builder itself */ - public JHipsterModulePackageJsonBuilder addDevDependency(PackageName packageName, VersionSource versionSource) { - devDependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).build()); + public JHipsterModulePackageJsonBuilder addDevDependency(PackageName packageName, NpmVersionSourceFactory versionSource) { + devDependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource.build()).build()); return this; } @@ -164,11 +169,15 @@ public JHipsterModulePackageJsonBuilder addDevDependency(PackageName packageName */ public JHipsterModulePackageJsonBuilder addDevDependency( PackageName packageName, - VersionSource versionSource, + NpmVersionSourceFactory versionSource, PackageName versionPackageName ) { devDependencies.add( - PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).versionPackageName(versionPackageName).build() + PackageJsonDependency.builder() + .packageName(packageName) + .versionSource(versionSource.build()) + .versionPackageName(versionPackageName) + .build() ); return this; diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java index bf9c85c014b..918933986ad 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java +++ b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java @@ -2,13 +2,14 @@ import java.util.Objects; import java.util.Optional; +import tech.jhipster.lite.module.domain.npm.NpmVersionSource; import tech.jhipster.lite.shared.error.domain.Assert; import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; public final class PackageJsonDependency { private final PackageName packageName; - private final VersionSource versionSource; + private final NpmVersionSource versionSource; private final Optional versionPackageName; private PackageJsonDependency(PackageJsonDependencyBuilder builder) { @@ -23,7 +24,7 @@ public PackageName packageName() { return packageName; } - public VersionSource versionSource() { + public NpmVersionSource versionSource() { return versionSource; } @@ -64,7 +65,7 @@ private static final class PackageJsonDependencyBuilder implements PackageJsonDependencyPackageNameBuilder, PackageJsonDependencyVersionSourceBuilder, PackageJsonDependencyOptionalBuilder { private PackageName packageName; - private VersionSource versionSource; + private NpmVersionSource versionSource; private PackageName versionPackageName; @Override @@ -74,7 +75,7 @@ public PackageJsonDependencyVersionSourceBuilder packageName(PackageName package } @Override - public PackageJsonDependencyOptionalBuilder versionSource(VersionSource versionSource) { + public PackageJsonDependencyOptionalBuilder versionSource(NpmVersionSource versionSource) { this.versionSource = versionSource; return this; } @@ -96,7 +97,7 @@ public interface PackageJsonDependencyPackageNameBuilder { } public interface PackageJsonDependencyVersionSourceBuilder { - PackageJsonDependencyOptionalBuilder versionSource(VersionSource versionSource); + PackageJsonDependencyOptionalBuilder versionSource(NpmVersionSource versionSource); } public interface PackageJsonDependencyOptionalBuilder { diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java index 6ed27290657..7fe36cce1b4 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java +++ b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java @@ -1,6 +1,7 @@ package tech.jhipster.lite.module.domain.packagejson; import tech.jhipster.lite.shared.error.domain.Assert; +import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; public record PackageName(String packageName) { public PackageName { @@ -10,4 +11,10 @@ public record PackageName(String packageName) { public String get() { return packageName(); } + + @Override + @ExcludeFromGeneratedCodeCoverage + public String toString() { + return packageName; + } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java deleted file mode 100644 index 00a9e9becb2..00000000000 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java +++ /dev/null @@ -1,9 +0,0 @@ -package tech.jhipster.lite.module.domain.packagejson; - -public enum VersionSource { - COMMON, - ANGULAR, - REACT, - SVELTE, - VUE, -} diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java index 45aacbe661f..9f127a8dbe1 100644 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java @@ -13,12 +13,10 @@ import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModuleContext; import tech.jhipster.lite.module.domain.file.TemplateRenderer; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; import tech.jhipster.lite.module.domain.npm.NpmVersions; import tech.jhipster.lite.module.domain.packagejson.*; import tech.jhipster.lite.module.domain.properties.JHipsterProjectFolder; import tech.jhipster.lite.shared.collection.domain.JHipsterCollections; -import tech.jhipster.lite.shared.enumeration.domain.Enums; import tech.jhipster.lite.shared.error.domain.Assert; import tech.jhipster.lite.shared.error.domain.GeneratorException; import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; @@ -156,7 +154,7 @@ private Collection dependenciesEntries(PackageNames packageNames) { private String getNpmVersion(PackageJsonDependency dependency) { PackageName packageName = dependency.versionPackageName().orElse(dependency.packageName()); - return npmVersions.get(packageName.get(), Enums.map(dependency.versionSource(), NpmVersionSource.class)).get(); + return npmVersions.get(packageName.get(), dependency.versionSource()).get(); } @ExcludeFromGeneratedCodeCoverage(reason = "The error handling is an hard to test implementation detail") diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java index 2783ccf8b90..7413a21daab 100644 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java @@ -4,34 +4,40 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Repository; import tech.jhipster.lite.module.domain.ProjectFiles; -import tech.jhipster.lite.module.domain.npm.NpmPackage; -import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions; +import tech.jhipster.lite.module.domain.npm.*; import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions.NpmPackagesVersionsBuilder; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; -import tech.jhipster.lite.shared.enumeration.domain.Enums; +import tech.jhipster.lite.shared.error.domain.Assert; -@Repository -@Order -class FileSystemNpmVersionReader implements NpmVersionsReader { +public class FileSystemNpmVersionReader implements NpmVersionsReader { private static final Pattern DEV_DEPENDENCIES_PATTERN = Pattern.compile("\"devDependencies\"\\s*:\\s*\\{([^}]*)}", Pattern.DOTALL); private static final Pattern DEPENDENCIES_PATTERN = Pattern.compile("\"dependencies\"\\s*:\\s*\\{([^}]*)}", Pattern.DOTALL); private static final Pattern PACKAGES_PATTERN = Pattern.compile("\"([^\"]+)\"\\s*:\\s*\"([^\"]+)\"", Pattern.DOTALL); private final ProjectFiles projectFiles; + private final Collection npmVersionSources; + private final String parentInputFolder; + + public FileSystemNpmVersionReader( + ProjectFiles projectFiles, + Collection npmVersionSources, + String parentInputFolder + ) { + Assert.notNull("projectFiles", projectFiles); + Assert.notNull("npmVersionSources", npmVersionSources); + Assert.notBlank("parentInputFolder", parentInputFolder); - public FileSystemNpmVersionReader(ProjectFiles projectFiles) { this.projectFiles = projectFiles; + this.npmVersionSources = npmVersionSources.stream().map(NpmVersionSourceFactory::build).toList(); + this.parentInputFolder = parentInputFolder; } @Override public NpmPackagesVersions get() { NpmPackagesVersionsBuilder builder = NpmPackagesVersions.builder(); - Stream.of(NpmVersionSource.values()).forEach(source -> builder.put(source, sourcePackages(source))); + npmVersionSources.forEach(source -> builder.put(source, sourcePackages(source))); return builder.build(); } @@ -57,10 +63,10 @@ private Stream readPackages(String content) { } private String readVersionsFile(NpmVersionSource source) { - return projectFiles.readString("/generator/dependencies/" + sourceFolder(source) + "/package.json"); + return projectFiles.readString(parentInputFolder + sourceFolder(source) + "/package.json"); } private String sourceFolder(NpmVersionSource source) { - return Enums.map(source, NpmVersionSourceFolder.class).folder(); + return source.name().toLowerCase(); } } diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterLiteFileSystemNpmVersionReader.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterLiteFileSystemNpmVersionReader.java new file mode 100644 index 00000000000..91892719b87 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterLiteFileSystemNpmVersionReader.java @@ -0,0 +1,24 @@ +package tech.jhipster.lite.module.infrastructure.secondary.npm; + +import java.util.List; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Repository; +import tech.jhipster.lite.module.domain.ProjectFiles; +import tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource; +import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions; + +@Order +@Repository +public class JHipsterLiteFileSystemNpmVersionReader implements NpmVersionsReader { + + private final FileSystemNpmVersionReader reader; + + public JHipsterLiteFileSystemNpmVersionReader(ProjectFiles projectFiles) { + reader = new FileSystemNpmVersionReader(projectFiles, List.of(JHLiteNpmVersionSource.values()), "/generator/dependencies/"); + } + + @Override + public NpmPackagesVersions get() { + return reader.get(); + } +} diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionSourceFolder.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionSourceFolder.java deleted file mode 100644 index 31429969f3b..00000000000 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionSourceFolder.java +++ /dev/null @@ -1,19 +0,0 @@ -package tech.jhipster.lite.module.infrastructure.secondary.npm; - -enum NpmVersionSourceFolder { - COMMON("common"), - ANGULAR("angular"), - REACT("react"), - SVELTE("svelte"), - VUE("vue"); - - private final String folder; - - NpmVersionSourceFolder(String folder) { - this.folder = folder; - } - - String folder() { - return folder; - } -} diff --git a/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java b/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java index a7d5593ca26..c77a8cbef93 100644 --- a/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java +++ b/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java @@ -1,6 +1,6 @@ package tech.jhipster.lite.generator.server.javatool.frontendmaven.domain; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.when; import static tech.jhipster.lite.module.infrastructure.secondary.JHipsterModulesAssertions.*; import org.jetbrains.annotations.NotNull; @@ -13,9 +13,7 @@ import tech.jhipster.lite.UnitTest; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.JHipsterModulesFixture; -import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; -import tech.jhipster.lite.module.domain.npm.NpmVersions; +import tech.jhipster.lite.module.domain.npm.*; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; @UnitTest @@ -275,7 +273,7 @@ val npmVersionValue by extra("4.0.0") } private void mockNpmVersion() { - when(npmVersions.get("npm", NpmVersionSource.COMMON)).thenReturn(new NpmPackageVersion("4.0.0")); + when(npmVersions.get("npm", JHLiteNpmVersionSource.COMMON)).thenReturn(new NpmPackageVersion("4.0.0")); when(npmVersions.nodeVersion()).thenReturn(new NpmPackageVersion("16.0.0")); } diff --git a/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java b/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java index 2bbe71178e4..d306747defa 100644 --- a/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java +++ b/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java @@ -1,33 +1,23 @@ package tech.jhipster.lite.module.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import tech.jhipster.lite.TestFileUtils; -import tech.jhipster.lite.module.domain.buildproperties.BuildProperty; -import tech.jhipster.lite.module.domain.buildproperties.PropertyKey; -import tech.jhipster.lite.module.domain.buildproperties.PropertyValue; -import tech.jhipster.lite.module.domain.gradleplugin.GradleMainBuildPlugin; -import tech.jhipster.lite.module.domain.gradleplugin.GradlePlugin; -import tech.jhipster.lite.module.domain.gradleplugin.GradleProfilePlugin; -import tech.jhipster.lite.module.domain.javabuild.ArtifactId; -import tech.jhipster.lite.module.domain.javabuild.GroupId; -import tech.jhipster.lite.module.domain.javabuild.MavenBuildExtension; -import tech.jhipster.lite.module.domain.javabuild.command.AddDirectJavaDependency; -import tech.jhipster.lite.module.domain.javabuild.command.JavaBuildCommands; -import tech.jhipster.lite.module.domain.javabuild.command.RemoveDirectJavaDependency; -import tech.jhipster.lite.module.domain.javabuild.command.SetVersion; +import tech.jhipster.lite.module.domain.buildproperties.*; +import tech.jhipster.lite.module.domain.gradleplugin.*; +import tech.jhipster.lite.module.domain.javabuild.*; +import tech.jhipster.lite.module.domain.javabuild.command.*; import tech.jhipster.lite.module.domain.javabuildprofile.BuildProfileId; import tech.jhipster.lite.module.domain.javadependency.*; import tech.jhipster.lite.module.domain.javadependency.JavaDependency.JavaDependencyOptionalValueBuilder; import tech.jhipster.lite.module.domain.javaproperties.SpringProperty; import tech.jhipster.lite.module.domain.javaproperties.SpringPropertyType; import tech.jhipster.lite.module.domain.mavenplugin.MavenPlugin; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.module.domain.properties.SpringConfigurationFormat; import tech.jhipster.lite.shared.error.domain.Assert; @@ -164,8 +154,8 @@ public static JHipsterModule module() { .packageJson() .addScript(scriptKey("build"), scriptCommand("ng build --output-path={{projectBuildDirectory}}/classes/static")) .addScript(scriptKey("serve"), scriptCommand("tikui-core serve")) - .addDependency(packageName("@angular/animations"), VersionSource.ANGULAR, packageName("@angular/core")) - .addDevDependency(packageName("@playwright/test"), VersionSource.COMMON) + .addDependency(packageName("@angular/animations"), ANGULAR, packageName("@angular/core")) + .addDevDependency(packageName("@playwright/test"), COMMON) .and() .mandatoryReplacements() .in(path("package.json")) diff --git a/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java b/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java index 03d38e3d9c2..36b9fd75ccb 100644 --- a/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java +++ b/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java @@ -2,8 +2,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static tech.jhipster.lite.module.domain.npm.NpmVersionSource.COMMON; -import static tech.jhipster.lite.module.domain.npm.NpmVersionSource.VUE; import java.util.List; import org.junit.jupiter.api.Nested; @@ -13,6 +11,9 @@ @UnitTest class NpmPackagesVersionsTest { + private static final NpmVersionSource COMMON = JHLiteNpmVersionSource.COMMON.build(); + private static final NpmVersionSource VUE = JHLiteNpmVersionSource.VUE.build(); + @Test void shouldNotVersionFromUnknownSource() { NpmPackagesVersions versions = NpmPackagesVersions.builder().build(); @@ -20,7 +21,7 @@ void shouldNotVersionFromUnknownSource() { assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown") - .hasMessageContaining("COMMON"); + .hasMessageContaining("common"); } @Test @@ -30,7 +31,7 @@ void shouldNotGetUnknownPackageVersion() { assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown") - .hasMessageContaining("COMMON"); + .hasMessageContaining("common"); } @Test diff --git a/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java b/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java index f61265bd227..bb15b2b8e91 100644 --- a/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java +++ b/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java @@ -1,6 +1,7 @@ package tech.jhipster.lite.module.domain.npm; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.entry; import org.junit.jupiter.api.Test; import tech.jhipster.lite.UnitTest; @@ -11,11 +12,14 @@ class UnknownNpmPackageExceptionTest { @Test void shouldGetExceptionInformation() { - UnknownNpmPackageException exception = new UnknownNpmPackageException(new NpmPackageName("package-name"), NpmVersionSource.ANGULAR); + UnknownNpmPackageException exception = new UnknownNpmPackageException( + new NpmPackageName("package-name"), + JHLiteNpmVersionSource.ANGULAR.build() + ); - assertThat(exception.getMessage()).isEqualTo("Can't find package-name version in ANGULAR package.json, forgot to add it?"); + assertThat(exception.getMessage()).isEqualTo("Can't find package-name version in angular package.json, forgot to add it?"); assertThat(exception.key()).isEqualTo(NpmErrorKey.UNKNOWN_PACKAGE); assertThat(exception.status()).isEqualTo(ErrorStatus.INTERNAL_SERVER_ERROR); - assertThat(exception.parameters()).containsOnly(entry("packageName", "package-name"), entry("packageSource", "ANGULAR")); + assertThat(exception.parameters()).containsOnly(entry("packageName", "package-name"), entry("packageSource", "angular")); } } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java index 9b7783406fb..529fa76a132 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java @@ -5,6 +5,8 @@ import static tech.jhipster.lite.module.domain.JHipsterModule.*; import static tech.jhipster.lite.module.domain.JHipsterModulesFixture.emptyModuleBuilder; import static tech.jhipster.lite.module.domain.JHipsterModulesFixture.emptyModuleContext; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.COMMONJS; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.MODULE; @@ -19,10 +21,10 @@ import tech.jhipster.lite.TestFileUtils; import tech.jhipster.lite.UnitTest; import tech.jhipster.lite.module.domain.Indentation; -import tech.jhipster.lite.module.domain.npm.*; +import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; +import tech.jhipster.lite.module.domain.npm.NpmVersions; import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson; import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson.JHipsterModulePackageJsonBuilder; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterProjectFolder; import tech.jhipster.lite.module.infrastructure.secondary.file.MustacheTemplateRenderer; @@ -60,14 +62,14 @@ private JHipsterProjectFolder emptyFolder() { @Test void shouldNotAddNotNeededBlock() { - when(npmVersions.get("@playwright/test", NpmVersionSource.COMMON)).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get("@playwright/test", COMMON.build())).thenReturn(new NpmPackageVersion("1.1.1")); JHipsterProjectFolder folder = projectWithPackageJson("src/test/resources/projects/empty-node/package.json"); packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@playwright/test"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@playwright/test"), COMMON)), emptyModuleContext() ); @@ -282,7 +284,7 @@ void shouldAddDevDependencyToPackageJsonWithoutDevDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), COMMON)), emptyModuleContext() ); @@ -306,7 +308,7 @@ void shouldAddDevDependencyToPackageJsonWithDevDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), COMMON)), emptyModuleContext() ); @@ -322,14 +324,14 @@ void shouldAddDevDependencyToPackageJsonWithDevDependencySection() { @Test void shouldAddDevDependencyToPackageJsonUsingVersionSourcePackage() { - when(npmVersions.get("@angular/core", NpmVersionSource.ANGULAR)).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get("@angular/core", ANGULAR.build())).thenReturn(new NpmPackageVersion("1.1.1")); JHipsterProjectFolder folder = projectWithPackageJson("src/test/resources/projects/node/package.json"); packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@angular/animations"), VersionSource.ANGULAR, packageName("@angular/core"))), + packageJson(p -> p.addDevDependency(packageName("@angular/animations"), ANGULAR, packageName("@angular/core"))), emptyModuleContext() ); @@ -351,7 +353,7 @@ void shouldReplaceExistingDevDependency() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xml"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xml"), COMMON)), emptyModuleContext() ); @@ -388,7 +390,7 @@ void shouldRemoveExistingDevDependency() { } private void mockDevVersion() { - when(npmVersions.get(anyString(), eq(NpmVersionSource.COMMON))).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get(anyString(), eq(COMMON.build()))).thenReturn(new NpmPackageVersion("1.1.1")); } } @@ -404,7 +406,7 @@ void shouldAddDependencyToPackageJsonWithoutDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), VersionSource.COMMON)), + packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), COMMON)), emptyModuleContext() ); @@ -428,7 +430,7 @@ void shouldAddDependencyToPackageJsonWithDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-coree"), VersionSource.COMMON)), + packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-coree"), COMMON)), emptyModuleContext() ); @@ -444,14 +446,14 @@ void shouldAddDependencyToPackageJsonWithDependencySection() { @Test void shouldAddDependencyToPackageJsonUsingVersionSourcePackage() { - when(npmVersions.get("@angular/core", NpmVersionSource.ANGULAR)).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get("@angular/core", ANGULAR.build())).thenReturn(new NpmPackageVersion("1.1.1")); JHipsterProjectFolder folder = projectWithPackageJson("src/test/resources/projects/node/package.json"); packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@angular/animations"), VersionSource.ANGULAR, packageName("@angular/core"))), + packageJson(p -> p.addDependency(packageName("@angular/animations"), ANGULAR, packageName("@angular/core"))), emptyModuleContext() ); @@ -473,7 +475,7 @@ void shouldReplaceExistingDependency() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), VersionSource.COMMON)), + packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), COMMON)), emptyModuleContext() ); @@ -510,7 +512,7 @@ void shouldRemoveExistingDependency() { } private void mockVersion() { - when(npmVersions.get(anyString(), eq(NpmVersionSource.COMMON))).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get(anyString(), eq(COMMON.build()))).thenReturn(new NpmPackageVersion("1.1.1")); } } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java index b5df100fc41..b9d2a1986f9 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java @@ -13,10 +13,6 @@ public final class JavaDependenciesFixture { private JavaDependenciesFixture() {} - public static JavaDependenciesVersionsRepository javaVersionsRepository(ProjectFiles filesReader) { - return javaVersionsRepository(filesReader, List.of()); - } - public static JavaDependenciesVersionsRepository javaVersionsRepository( ProjectFiles filesReader, Collection customReaders @@ -25,8 +21,8 @@ public static JavaDependenciesVersionsRepository javaVersionsRepository( return new JHipsterJavaDependenciesVersionsRepository( Stream.concat( - Stream.of(new MavenDependenciesReader(filesReader), new GradleVersionCatalogDependenciesReader(filesReader)), - customReaders.stream() + customReaders.stream(), + Stream.of(new MavenDependenciesReader(filesReader), new GradleVersionCatalogDependenciesReader(filesReader)) ).toList() ); } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java index 5846afbd543..f01a76a7412 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java @@ -1,34 +1,40 @@ package tech.jhipster.lite.module.infrastructure.secondary.npm; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.when; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import tech.jhipster.lite.UnitTest; import tech.jhipster.lite.module.domain.ProjectFiles; -import tech.jhipster.lite.module.domain.npm.NpmPackageName; -import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; +import tech.jhipster.lite.module.domain.npm.*; @UnitTest @ExtendWith(MockitoExtension.class) class FileSystemNpmVersionReaderTest { + private static final NpmVersionSource COMMON = JHLiteNpmVersionSource.COMMON.build(); + @Mock private ProjectFiles projectFiles; - @InjectMocks private FileSystemNpmVersionReader reader; + @BeforeEach + void setup() { + reader = new FileSystemNpmVersionReader(projectFiles, List.of(JHLiteNpmVersionSource.COMMON), "not-used"); + } + @Test void shouldGetVersionFromDevSource() { mockProjectFiles(); - NpmPackageVersion version = reader.get().get(new NpmPackageName("@types/node"), NpmVersionSource.COMMON); + NpmPackageVersion version = reader.get().get(new NpmPackageName("@types/node"), COMMON); assertThat(version).isEqualTo(new NpmPackageVersion("17.0.43")); } @@ -37,7 +43,7 @@ void shouldGetVersionFromDevSource() { void shouldGetVersionFromSource() { mockProjectFiles(); - NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), NpmVersionSource.COMMON); + NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), COMMON); assertThat(version).isEqualTo(new NpmPackageVersion("1.2.3")); } @@ -46,7 +52,7 @@ void shouldGetVersionFromSource() { void shouldGetVersionFromEmptySourceWithEmptyDevSource() { emptyProjectFiles(); - NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), NpmVersionSource.COMMON); + NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), COMMON); assertThat(version).isEqualTo(new NpmPackageVersion("1.2.3")); } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java index ba8a377651d..1b861ce0fe7 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java @@ -1,26 +1,25 @@ package tech.jhipster.lite.module.infrastructure.secondary.npm; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.util.Collection; import java.util.List; import org.junit.jupiter.api.Test; import tech.jhipster.lite.UnitTest; -import tech.jhipster.lite.module.domain.npm.NpmPackage; -import tech.jhipster.lite.module.domain.npm.NpmPackageName; -import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; -import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; -import tech.jhipster.lite.module.domain.npm.UnknownNpmPackageException; +import tech.jhipster.lite.module.domain.npm.*; @UnitTest class JHipsterNpmVersionsTest { + private static final NpmVersionSource COMMON = JHLiteNpmVersionSource.COMMON.build(); + private static final NpmVersionSource VUE = JHLiteNpmVersionSource.VUE.build(); + @Test void shouldNotReadVersionWithoutReaders() { JHipsterNpmVersions versions = new JHipsterNpmVersions(List.of()); - assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), NpmVersionSource.COMMON)) + assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown"); } @@ -29,7 +28,7 @@ void shouldNotReadVersionWithoutReaders() { void shouldNotReadUnknownVersion() { JHipsterNpmVersions versions = new JHipsterNpmVersions(List.of(emptyReader())); - assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), NpmVersionSource.COMMON)) + assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown"); } @@ -40,18 +39,17 @@ private NpmVersionsReader emptyReader() { @Test void shouldReadFirstReadableVersion() { - NpmVersionsReader firstReader = () -> - NpmPackagesVersions.builder().put(NpmVersionSource.COMMON, packages(new NpmPackage("vue", "1.2.3"))).build(); + NpmVersionsReader firstReader = () -> NpmPackagesVersions.builder().put(COMMON, packages(new NpmPackage("vue", "1.2.3"))).build(); NpmVersionsReader secondReader = () -> NpmPackagesVersions.builder() - .put(NpmVersionSource.COMMON, packages(new NpmPackage("vue", "1.2.7"))) - .put(NpmVersionSource.VUE, packages(new NpmPackage("vue", "1.2.7"))) + .put(COMMON, packages(new NpmPackage("vue", "1.2.7"))) + .put(VUE, packages(new NpmPackage("vue", "1.2.7"))) .build(); JHipsterNpmVersions versions = new JHipsterNpmVersions(List.of(emptyReader(), firstReader, secondReader)); - assertThat(versions.get("vue", NpmVersionSource.COMMON)).isEqualTo(new NpmPackageVersion("1.2.3")); - assertThat(versions.get("vue", NpmVersionSource.VUE)).isEqualTo(new NpmPackageVersion("1.2.7")); + assertThat(versions.get("vue", COMMON)).isEqualTo(new NpmPackageVersion("1.2.3")); + assertThat(versions.get("vue", JHLiteNpmVersionSource.VUE)).isEqualTo(new NpmPackageVersion("1.2.7")); } private static Collection packages(NpmPackage... packages) { diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java index 932c5ef220d..c71a07f2b72 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java @@ -1,7 +1,6 @@ package tech.jhipster.lite.module.infrastructure.secondary.npm; import java.util.Collection; -import java.util.List; import java.util.stream.Stream; import tech.jhipster.lite.module.domain.ProjectFiles; import tech.jhipster.lite.module.domain.npm.NpmVersions; @@ -11,13 +10,11 @@ public final class NpmVersionsFixture { private NpmVersionsFixture() {} - public static NpmVersions npmVersions(ProjectFiles filesReader) { - return new JHipsterNpmVersions(List.of(new FileSystemNpmVersionReader(filesReader))); - } - public static NpmVersions npmVersions(ProjectFiles filesReader, Collection customReaders) { Assert.notNull("customReaders", customReaders); - return new JHipsterNpmVersions(Stream.concat(Stream.of(new FileSystemNpmVersionReader(filesReader)), customReaders.stream()).toList()); + return new JHipsterNpmVersions( + Stream.concat(customReaders.stream(), Stream.of(new JHipsterLiteFileSystemNpmVersionReader(filesReader))).toList() + ); } }