generator-jhipster 7.9.0 → 7.9.3
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/cli/environment-builder.js +15 -1
- package/cli/jhipster.js +0 -0
- package/generators/app/index.js +12 -1
- package/generators/bootstrap/index.js +33 -1
- package/generators/ci-cd/templates/circle.yml.ejs +3 -13
- package/generators/client/files-angular.js +1 -1
- package/generators/client/files-react.js +5 -2
- package/generators/client/files-vue.js +3 -2
- package/generators/client/templates/angular/jest.conf.js.ejs +6 -3
- package/generators/client/templates/angular/package.json +18 -18
- package/generators/client/templates/angular/package.json.ejs +3 -7
- package/generators/client/templates/angular/src/main/webapp/app/admin/admin-routing.module.ts.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.model.ts.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +17 -15
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.model.ts.ejs +2 -2
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.route.ts.ejs +4 -4
- package/generators/client/templates/angular/src/main/webapp/app/core/request/request-util.ts.ejs +4 -2
- package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.html.ejs +8 -6
- package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.ts.ejs +6 -11
- package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +227 -25
- package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.ts.ejs +104 -43
- package/generators/client/templates/angular/src/main/webapp/content/scss/global.scss.ejs +8 -0
- package/generators/client/templates/angular/tsconfig.json.ejs +0 -1
- package/generators/client/templates/angular/tsconfig.spec.json.ejs +2 -3
- package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +0 -3
- package/generators/client/templates/common/package.json +4 -4
- package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +1 -1
- package/generators/client/templates/react/jest.conf.js.ejs +2 -2
- package/generators/client/templates/react/package.json +24 -24
- package/generators/client/templates/react/package.json.ejs +3 -7
- package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +0 -6
- package/generators/client/templates/react/src/main/webapp/app/index.tsx.ejs +4 -5
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.spec.ts.ejs +7 -7
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.ts.ejs +6 -6
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/index.tsx.ejs +2 -2
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.spec.ts.ejs +17 -8
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +176 -19
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +46 -13
- package/generators/client/templates/react/webpack/webpack.microfrontend.js.jhi.react.ejs +1 -1
- package/generators/client/templates/vue/package.json +17 -17
- package/generators/client/templates/vue/package.json.ejs +3 -7
- package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +2 -1
- package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +2 -2
- package/generators/client/templates/vue/src/main/webapp/app/router/admin.ts.ejs +2 -2
- package/generators/client/templates/vue/src/test/javascript/e2e/modules/administration/administration.spec.ts.ejs +1 -1
- package/generators/client/templates/vue/src/test/javascript/e2e/page-objects/administration-page.ts.ejs +1 -1
- package/generators/client/templates/vue/src/test/javascript/e2e/page-objects/navbar-page.ts.ejs +2 -2
- package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +5 -6
- package/generators/client/templates/vue/src/test/javascript/spec/app/account/account.service.spec.ts.ejs +4 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/alert/alert.service.spec.ts.ejs +106 -3
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +12 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/formatter.spec.ts.ejs +6 -0
- package/generators/client/templates/vue/src/test/javascript/spec/app/shared/sort/sorts.spec.ts.ejs +10 -0
- package/generators/client/templates/vue/webpack/webpack.common.js.ejs +1 -1
- package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +2 -2
- package/generators/common/files.js +5 -4
- package/generators/common/templates/.husky/pre-commit.ejs +0 -0
- package/generators/common/templates/package.json +1 -1
- package/generators/common/templates/sonar-project.properties.ejs +19 -11
- package/generators/cypress/index.js +1 -1
- package/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +3 -3
- package/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
- package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +32 -14
- package/generators/entity/index.js +4 -3
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +1 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +18 -6
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +1 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +23 -19
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +3 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +1 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.ts.ejs +1 -1
- package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/common/delete_template.ejs +7 -3
- package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +15 -5
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_persistable.ejs +8 -1
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +5 -0
- package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +4 -4
- package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +6 -4
- package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +3 -26
- package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +1 -0
- package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +1 -1
- package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +33 -28
- package/generators/generate-blueprint/constants.mjs +46 -6
- package/generators/generate-blueprint/esm.mjs +0 -0
- package/generators/generate-blueprint/files.mjs +7 -5
- package/generators/generate-blueprint/generator.mjs +73 -19
- package/generators/generate-blueprint/templates/cli/cli.mjs.ejs +0 -0
- package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +1 -1
- package/generators/generate-blueprint/templates/generators/generator/templates/template-file.ejs +0 -0
- package/generators/generator-base-blueprint.js +23 -1
- package/generators/generator-base-entities.cjs +5 -1
- package/generators/generator-base.js +82 -15
- package/generators/generator-constants.js +17 -23
- package/generators/init/templates/.husky/pre-commit +0 -0
- package/generators/kubernetes/templates/deployment.yml.ejs +1 -1
- package/generators/kubernetes/templates/ingress.yml.ejs +1 -1
- package/generators/kubernetes/templates/istio/gateway.yml.ejs +1 -1
- package/generators/kubernetes/templates/kubectl-apply.sh.ejs +0 -0
- package/generators/kubernetes/templates/kustomize/kustomization.yml.ejs +1 -1
- package/generators/kubernetes/templates/service.yml.ejs +1 -1
- package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +1 -1
- package/generators/kubernetes-knative/templates/kubectl-apply.sh.ejs +0 -0
- package/generators/kubernetes-knative/templates/service.yml.ejs +3 -3
- package/generators/languages/templates/src/main/webapp/i18n/al/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ar-ly/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/bg/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/bn/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/by/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ca/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/cs/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/da/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/de/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/el/activate.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/el/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/el/password.json +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/el/register.json +3 -3
- package/generators/languages/templates/src/main/webapp/i18n/el/tracker.json +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/el/user-management.json +9 -9
- package/generators/languages/templates/src/main/webapp/i18n/en/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/es/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/et/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/fa/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/fi/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/fr/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/gl/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/hi/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/hr/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/hu/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/hy/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/in/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/it/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ja/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ko/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/mr/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/my/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/nl/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/pa/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/pl/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/pt-br/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/pt-pt/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ro/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ru/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/si/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/sk/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/sr/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/sv/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ta/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/te/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/th/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/tr/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/ua/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/vi/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/zh-cn/health.json.ejs +1 -1
- package/generators/languages/templates/src/main/webapp/i18n/zh-tw/health.json.ejs +1 -1
- package/generators/maven/templates/mvnw +0 -0
- package/generators/openshift/templates/deployment.yml.ejs +2 -2
- package/generators/server/cleanup-elasticsearch.js +5 -0
- package/generators/server/files.js +17 -8
- package/generators/server/index.js +0 -2
- package/generators/server/templates/build.gradle.ejs +6 -14
- package/generators/server/templates/gradle/profile_dev.gradle.ejs +1 -1
- package/generators/server/templates/gradle/profile_prod.gradle.ejs +1 -1
- package/generators/server/templates/gradle.properties.ejs +6 -4
- package/generators/server/templates/gradlew +0 -0
- package/generators/server/templates/mvnw +0 -0
- package/generators/server/templates/npmw +0 -0
- package/generators/server/templates/npmw.cmd +31 -29
- package/generators/server/templates/package.json.ejs +2 -2
- package/generators/server/templates/pom.xml.ejs +12 -23
- package/generators/server/templates/sql/common/src/test/java/package/config/MsSqlTestContainer.java.ejs +2 -3
- package/generators/server/templates/src/main/docker/app.yml.ejs +7 -1
- package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +32 -14
- package/generators/server/templates/src/main/docker/jhipster-control-center.yml.ejs +1 -1
- package/generators/server/templates/src/main/docker/prometheus/prometheus.yml.ejs +1 -1
- package/generators/server/templates/src/main/java/package/Application.java.ejs +11 -4
- package/generators/server/templates/src/main/java/package/config/CRLFLogConverter.java.ejs +57 -0
- package/generators/server/templates/src/main/java/package/config/EurekaWorkaroundConfiguration.java.ejs +49 -0
- package/generators/server/templates/src/main/java/package/config/LoggingConfiguration.java.ejs +4 -4
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +17 -18
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +13 -5
- package/generators/server/templates/src/main/java/package/domain/AbstractAuditingEntity.java.ejs +5 -6
- package/generators/server/templates/src/main/java/package/domain/User.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +13 -6
- package/generators/server/templates/src/main/java/package/service/dto/AdminUserDTO.java.ejs +3 -1
- package/generators/server/templates/src/main/java/package/service/dto/PasswordChangeDTO.java.ejs +5 -1
- package/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +3 -1
- package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +15 -42
- package/generators/server/templates/src/main/java/package/web/rest/errors/BadRequestAlertException.java.ejs +1 -0
- package/generators/server/templates/src/main/java/package/web/rest/errors/EmailAlreadyUsedException.java.ejs +1 -0
- package/generators/server/templates/src/main/java/package/web/rest/errors/InvalidPasswordException.java.ejs +1 -0
- package/generators/server/templates/src/main/java/package/web/rest/errors/LoginAlreadyUsedException.java.ejs +1 -0
- package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
- package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +3 -3
- package/generators/server/templates/src/main/resources/config/application.yml.ejs +4 -2
- package/generators/server/templates/src/main/resources/config/liquibase/master.xml.ejs +3 -8
- package/generators/server/templates/src/main/resources/logback-spring.xml.ejs +5 -0
- package/generators/server/templates/src/test/java/package/config/{ElasticsearchReactiveTestConfiguration.java.ejs → ElasticsearchTestConfiguration.java.ejs} +3 -3
- package/generators/server/templates/src/test/java/package/config/ElasticsearchTestContainer.java.ejs +1 -0
- package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +3 -0
- package/generators/server/templates/src/test/java/package/config/TestContainersSpringContextCustomizerFactory.java.ejs +2 -2
- package/generators/sql-constants.js +5 -2
- package/generators/utils.js +43 -3
- package/generators/workspaces/index.js +2 -1
- package/jdl/exporters/jdl-exporter.js +6 -1
- package/jdl/jhipster/application-options.js +2 -1
- package/jdl/jhipster/binary-options.js +2 -2
- package/jdl/jhipster/default-application-options.js +11 -8
- package/jdl/jhipster/entity-options.js +1 -0
- package/jdl/jhipster/search-engine-types.js +1 -0
- package/lib/constants/priorities.cjs +16 -0
- package/lib/constants/priorities.mjs +1 -0
- package/lib/index.js +2 -0
- package/lib/support/base.cjs +2 -1
- package/package.json +7 -6
- package/utils/blueprint.js +10 -0
- package/utils/field.js +9 -9
- package/generators/client/templates/react/src/main/webapp/app/config/translation-middleware.ts.ejs +0 -58
- package/generators/server/templates/.npmrc.ejs +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
-
"@fortawesome/fontawesome-svg-core": "6.
|
|
4
|
-
"@fortawesome/free-solid-svg-icons": "6.
|
|
3
|
+
"@fortawesome/fontawesome-svg-core": "6.2.0",
|
|
4
|
+
"@fortawesome/free-solid-svg-icons": "6.2.0",
|
|
5
5
|
"@fortawesome/react-fontawesome": "0.2.0",
|
|
6
|
-
"@reduxjs/toolkit": "1.8.
|
|
6
|
+
"@reduxjs/toolkit": "1.8.5",
|
|
7
7
|
"axios": "0.27.2",
|
|
8
8
|
"bootstrap": "5.2.0",
|
|
9
9
|
"bootswatch": "5.2.0",
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
"react": "18.2.0",
|
|
13
13
|
"react-dom": "18.2.0",
|
|
14
14
|
"react-hook-form": "7.30.0",
|
|
15
|
-
"react-jhipster": "0.
|
|
15
|
+
"react-jhipster": "0.22.0",
|
|
16
16
|
"react-loadable": "5.5.0",
|
|
17
17
|
"react-redux": "8.0.2",
|
|
18
18
|
"react-redux-loading-bar": "5.0.4",
|
|
19
19
|
"react-router-dom": "6.3.0",
|
|
20
|
-
"react-toastify": "9.0.
|
|
21
|
-
"react-transition-group": "4.4.
|
|
22
|
-
"reactstrap": "9.1.
|
|
20
|
+
"react-toastify": "9.0.8",
|
|
21
|
+
"react-transition-group": "4.4.5",
|
|
22
|
+
"reactstrap": "9.1.4",
|
|
23
23
|
"redux": "4.2.0",
|
|
24
24
|
"redux-thunk": "2.4.1",
|
|
25
25
|
"sonar-scanner": "3.1.0",
|
|
@@ -28,27 +28,27 @@
|
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@testing-library/react": "13.3.0",
|
|
31
|
-
"@types/jest": "28.1.
|
|
32
|
-
"@types/lodash": "4.14.
|
|
33
|
-
"@types/node": "16.11.
|
|
34
|
-
"@types/react": "18.0.
|
|
31
|
+
"@types/jest": "28.1.8",
|
|
32
|
+
"@types/lodash": "4.14.184",
|
|
33
|
+
"@types/node": "16.11.56",
|
|
34
|
+
"@types/react": "18.0.18",
|
|
35
35
|
"@types/react-dom": "18.0.6",
|
|
36
36
|
"@types/react-redux": "7.1.24",
|
|
37
37
|
"@types/redux": "3.6.31",
|
|
38
|
-
"@types/webpack-env": "1.
|
|
39
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
40
|
-
"@typescript-eslint/parser": "5.
|
|
38
|
+
"@types/webpack-env": "1.18.0",
|
|
39
|
+
"@typescript-eslint/eslint-plugin": "5.36.1",
|
|
40
|
+
"@typescript-eslint/parser": "5.36.1",
|
|
41
41
|
"autoprefixer": "10.4.8",
|
|
42
42
|
"browser-sync": "2.27.10",
|
|
43
43
|
"browser-sync-webpack-plugin": "2.3.0",
|
|
44
44
|
"copy-webpack-plugin": "11.0.0",
|
|
45
|
-
"core-js": "3.
|
|
45
|
+
"core-js": "3.25.0",
|
|
46
46
|
"cross-env": "7.0.3",
|
|
47
47
|
"css-loader": "6.7.1",
|
|
48
48
|
"css-minimizer-webpack-plugin": "4.0.0",
|
|
49
|
-
"eslint": "8.
|
|
49
|
+
"eslint": "8.23.0",
|
|
50
50
|
"eslint-config-prettier": "8.5.0",
|
|
51
|
-
"eslint-plugin-react": "7.
|
|
51
|
+
"eslint-plugin-react": "7.31.1",
|
|
52
52
|
"eslint-webpack-plugin": "3.2.0",
|
|
53
53
|
"folder-hash": "4.0.2",
|
|
54
54
|
"fork-ts-checker-webpack-plugin": "7.2.13",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"identity-obj-proxy": "3.0.0",
|
|
57
57
|
"jest": "28.1.3",
|
|
58
58
|
"jest-environment-jsdom": "28.1.3",
|
|
59
|
-
"jest-junit": "14.0.
|
|
60
|
-
"jest-sonar
|
|
59
|
+
"jest-junit": "14.0.1",
|
|
60
|
+
"jest-sonar": "0.2.12",
|
|
61
61
|
"json-loader": "0.5.7",
|
|
62
62
|
"merge-jsons-webpack-plugin": "2.0.1",
|
|
63
63
|
"mini-css-extract-plugin": "2.6.1",
|
|
@@ -66,21 +66,21 @@
|
|
|
66
66
|
"react-infinite-scroll-component": "6.1.0",
|
|
67
67
|
"redux-mock-store": "1.5.4",
|
|
68
68
|
"rimraf": "3.0.2",
|
|
69
|
-
"sass": "1.54.
|
|
69
|
+
"sass": "1.54.8",
|
|
70
70
|
"sass-loader": "13.0.2",
|
|
71
71
|
"simple-progress-webpack-plugin": "2.0.0",
|
|
72
72
|
"sinon": "14.0.0",
|
|
73
73
|
"source-map-loader": "4.0.0",
|
|
74
74
|
"sourcemap-istanbul-instrumenter-loader": "0.2.0",
|
|
75
75
|
"style-loader": "3.3.1",
|
|
76
|
-
"terser-webpack-plugin": "5.3.
|
|
76
|
+
"terser-webpack-plugin": "5.3.6",
|
|
77
77
|
"thread-loader": "3.0.4",
|
|
78
|
-
"ts-jest": "28.0.
|
|
78
|
+
"ts-jest": "28.0.8",
|
|
79
79
|
"ts-loader": "9.3.1",
|
|
80
|
-
"typescript": "4.
|
|
80
|
+
"typescript": "4.8.2",
|
|
81
81
|
"webpack": "5.74.0",
|
|
82
82
|
"webpack-cli": "4.10.0",
|
|
83
|
-
"webpack-dev-server": "4.
|
|
83
|
+
"webpack-dev-server": "4.10.1",
|
|
84
84
|
"webpack-merge": "5.8.0",
|
|
85
85
|
"webpack-notifier": "1.15.0",
|
|
86
86
|
"workbox-webpack-plugin": "6.5.4"
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"jest": "<%= dependabotPackageJson.devDependencies['jest'] %>",
|
|
113
113
|
"jest-environment-jsdom": "<%= dependabotPackageJson.devDependencies['jest-environment-jsdom'] %>",
|
|
114
114
|
"jest-junit": "<%= dependabotPackageJson.devDependencies['jest-junit'] %>",
|
|
115
|
-
"jest-sonar
|
|
115
|
+
"jest-sonar": "<%= dependabotPackageJson.devDependencies['jest-sonar'] %>",
|
|
116
116
|
"json-loader": "<%= dependabotPackageJson.devDependencies['json-loader'] %>",
|
|
117
117
|
<%_ if (enableTranslation) { _%>
|
|
118
118
|
"folder-hash": "<%= dependabotPackageJson.devDependencies['folder-hash'] %>",
|
|
@@ -173,8 +173,8 @@
|
|
|
173
173
|
"default_environment": "prod"
|
|
174
174
|
},
|
|
175
175
|
"scripts": {
|
|
176
|
-
"prettier:check": "prettier --check \"{,src/**/,webpack
|
|
177
|
-
"prettier:format": "prettier --write \"{,src/**/,webpack
|
|
176
|
+
"prettier:check": "prettier --check \"{,src/**/,webpack/,.blueprint/**/}*.{<%= getPrettierExtensions() %>}\"",
|
|
177
|
+
"prettier:format": "prettier --write \"{,src/**/,webpack/,.blueprint/**/}*.{<%= getPrettierExtensions() %>}\"",
|
|
178
178
|
"lint": "eslint . --ext .js,.ts,.jsx,.tsx",
|
|
179
179
|
"lint:fix": "<%= clientPackageManager %> run lint -- --fix",
|
|
180
180
|
"cleanup": "rimraf <%= DIST_DIR %>",
|
|
@@ -221,9 +221,5 @@
|
|
|
221
221
|
"webapp:prod": "<%= clientPackageManager %> run clean-www && <%= clientPackageManager %> run webapp:build:prod --",
|
|
222
222
|
"webapp:test": "<%= clientPackageManager %> run test --",
|
|
223
223
|
"webpack-dev-server": "webpack serve"
|
|
224
|
-
},
|
|
225
|
-
"jestSonar": {
|
|
226
|
-
"reportPath": "<%= BUILD_DIR %>test-results/jest",
|
|
227
|
-
"reportFile": "TESTS-results-sonar.xml"
|
|
228
224
|
}
|
|
229
225
|
}
|
|
@@ -38,9 +38,6 @@ import loggerMiddleware from './logger-middleware';
|
|
|
38
38
|
<%_ if (communicationSpringWebsocket) { _%>
|
|
39
39
|
import websocketMiddleware from './websocket-middleware';
|
|
40
40
|
<%_ } _%>
|
|
41
|
-
<%_ if (enableTranslation) { _%>
|
|
42
|
-
import translationMiddleware from './translation-middleware';
|
|
43
|
-
<%_ } _%>
|
|
44
41
|
|
|
45
42
|
const store = configureStore({
|
|
46
43
|
reducer: sharedReducers,
|
|
@@ -56,9 +53,6 @@ const store = configureStore({
|
|
|
56
53
|
loadingBarMiddleware(),
|
|
57
54
|
<%_ if (communicationSpringWebsocket) { _%>
|
|
58
55
|
websocketMiddleware,
|
|
59
|
-
<%_ } _%>
|
|
60
|
-
<%_ if (enableTranslation) { _%>
|
|
61
|
-
translationMiddleware,
|
|
62
56
|
<%_ } _%>
|
|
63
57
|
loggerMiddleware
|
|
64
58
|
),
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
limitations under the License.
|
|
18
18
|
-%>
|
|
19
19
|
import React from 'react';
|
|
20
|
-
import
|
|
20
|
+
import { createRoot } from 'react-dom/client';
|
|
21
21
|
import { Provider } from 'react-redux';
|
|
22
22
|
import { bindActionCreators } from 'redux';
|
|
23
23
|
|
|
@@ -42,18 +42,17 @@ setupAxiosInterceptors(() => actions.clearAuthentication('login.error.unauthoriz
|
|
|
42
42
|
loadIcons();
|
|
43
43
|
|
|
44
44
|
const rootEl = document.getElementById('root');
|
|
45
|
+
const root = createRoot(rootEl);
|
|
45
46
|
|
|
46
47
|
const render = Component =>
|
|
47
|
-
|
|
48
|
-
ReactDOM.render(
|
|
48
|
+
root.render(
|
|
49
49
|
<ErrorBoundary>
|
|
50
50
|
<Provider store={store}>
|
|
51
51
|
<div>
|
|
52
52
|
<Component />
|
|
53
53
|
</div>
|
|
54
54
|
</Provider>
|
|
55
|
-
</ErrorBoundary
|
|
56
|
-
rootEl
|
|
55
|
+
</ErrorBoundary>
|
|
57
56
|
);
|
|
58
57
|
|
|
59
58
|
render(AppComponent);
|
|
@@ -23,7 +23,7 @@ import thunk from 'redux-thunk';
|
|
|
23
23
|
import sinon from 'sinon';
|
|
24
24
|
|
|
25
25
|
import administration, {
|
|
26
|
-
<%_ if (applicationTypeGateway &&
|
|
26
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
27
27
|
getGatewayRoutes,
|
|
28
28
|
<%_ } _%>
|
|
29
29
|
<%_ if (withAdminUi) { _%>
|
|
@@ -56,7 +56,7 @@ describe('Administration reducer tests', () => {
|
|
|
56
56
|
errorMessage: null,
|
|
57
57
|
totalItems: 0
|
|
58
58
|
});
|
|
59
|
-
<%_ if (applicationTypeGateway &&
|
|
59
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
60
60
|
expect(isEmpty(state.gateway.routes));
|
|
61
61
|
<%_ } _%>
|
|
62
62
|
<%_ if (withAdminUi) { _%>
|
|
@@ -84,7 +84,7 @@ describe('Administration reducer tests', () => {
|
|
|
84
84
|
it('should set state to loading', () => {
|
|
85
85
|
testMultipleTypes(
|
|
86
86
|
[
|
|
87
|
-
<%_ if (applicationTypeGateway &&
|
|
87
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
88
88
|
getGatewayRoutes.pending.type,
|
|
89
89
|
<%_ } _%>
|
|
90
90
|
<%_ if (withAdminUi) { _%>
|
|
@@ -111,7 +111,7 @@ describe('Administration reducer tests', () => {
|
|
|
111
111
|
it('should set state to failed and put an error message in errorMessage', () => {
|
|
112
112
|
testMultipleTypes(
|
|
113
113
|
[
|
|
114
|
-
<%_ if (applicationTypeGateway &&
|
|
114
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
115
115
|
getGatewayRoutes.rejected.type,
|
|
116
116
|
<%_ } _%>
|
|
117
117
|
<%_ if (withAdminUi) { _%>
|
|
@@ -138,7 +138,7 @@ describe('Administration reducer tests', () => {
|
|
|
138
138
|
});
|
|
139
139
|
|
|
140
140
|
describe('Success', () => {
|
|
141
|
-
<%_ if (applicationTypeGateway &&
|
|
141
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
142
142
|
it('should update state according to a successful fetch gateway routes request', () => {
|
|
143
143
|
const payload = { data: [] };
|
|
144
144
|
const toTest = administration(undefined, { type: getGatewayRoutes.fulfilled.type, payload });
|
|
@@ -264,7 +264,7 @@ describe('Administration reducer tests', () => {
|
|
|
264
264
|
let store;
|
|
265
265
|
|
|
266
266
|
const resolvedObject = { value: 'whatever' };
|
|
267
|
-
<%_ if (applicationTypeGateway &&
|
|
267
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny || withAdminUi) { _%>
|
|
268
268
|
beforeEach(() => {
|
|
269
269
|
const mockStore = configureStore([thunk]);
|
|
270
270
|
store = mockStore({});
|
|
@@ -272,7 +272,7 @@ describe('Administration reducer tests', () => {
|
|
|
272
272
|
axios.post = sinon.stub().returns(Promise.resolve(resolvedObject));
|
|
273
273
|
});
|
|
274
274
|
<%_ } _%>
|
|
275
|
-
<%_ if (applicationTypeGateway &&
|
|
275
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
276
276
|
it('dispatches FETCH_GATEWAY_ROUTE_PENDING and FETCH_GATEWAY_ROUTE_FULFILLED actions', async () => {
|
|
277
277
|
const expectedActions = [
|
|
278
278
|
{
|
|
@@ -25,7 +25,7 @@ import { AppThunk } from 'app/config/store';
|
|
|
25
25
|
const initialState = {
|
|
26
26
|
loading: false,
|
|
27
27
|
errorMessage: null,
|
|
28
|
-
<%_ if (applicationTypeGateway &&
|
|
28
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
29
29
|
gateway: {
|
|
30
30
|
routes: []
|
|
31
31
|
},
|
|
@@ -53,7 +53,7 @@ const initialState = {
|
|
|
53
53
|
export type AdministrationState = Readonly<typeof initialState>;
|
|
54
54
|
|
|
55
55
|
// Actions
|
|
56
|
-
<%_ if (applicationTypeGateway &&
|
|
56
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
57
57
|
export const getGatewayRoutes = createAsyncThunk('administration/fetch_gateway_route', async () => axios.get<any>('api/gateway/routes'), {
|
|
58
58
|
serializeError: serializeAxiosError,
|
|
59
59
|
});
|
|
@@ -113,9 +113,9 @@ export const AdministrationSlice = createSlice({
|
|
|
113
113
|
<%_ } _%>
|
|
114
114
|
},
|
|
115
115
|
extraReducers(builder) {
|
|
116
|
-
<%_ if (withAdminUi || (applicationTypeGateway &&
|
|
116
|
+
<%_ if (withAdminUi || (applicationTypeGateway && serviceDiscoveryAny)) { _%>
|
|
117
117
|
builder
|
|
118
|
-
<%_ if (applicationTypeGateway &&
|
|
118
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
119
119
|
.addCase(getGatewayRoutes.fulfilled, (state, action) => {
|
|
120
120
|
state.loading = false;
|
|
121
121
|
state.gateway = {
|
|
@@ -159,7 +159,7 @@ export const AdministrationSlice = createSlice({
|
|
|
159
159
|
<%_ } _%>
|
|
160
160
|
.addMatcher(
|
|
161
161
|
isPending(
|
|
162
|
-
<%_ if (applicationTypeGateway &&
|
|
162
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
163
163
|
getGatewayRoutes,
|
|
164
164
|
<%_ } _%>
|
|
165
165
|
<%_ if (withAdminUi) { _%>
|
|
@@ -178,7 +178,7 @@ export const AdministrationSlice = createSlice({
|
|
|
178
178
|
)
|
|
179
179
|
.addMatcher(
|
|
180
180
|
isRejected(
|
|
181
|
-
<%_ if (applicationTypeGateway &&
|
|
181
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
182
182
|
getGatewayRoutes,
|
|
183
183
|
<%_ } _%>
|
|
184
184
|
<%_ if (withAdminUi) { _%>
|
package/generators/client/templates/react/src/main/webapp/app/modules/administration/index.tsx.ejs
CHANGED
|
@@ -30,7 +30,7 @@ import Metrics from './metrics/metrics';
|
|
|
30
30
|
import Configuration from './configuration/configuration';
|
|
31
31
|
<%_ } _%>
|
|
32
32
|
import Docs from './docs/docs';
|
|
33
|
-
<%_ if (applicationTypeGateway &&
|
|
33
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
34
34
|
import Gateway from './gateway/gateway';
|
|
35
35
|
<%_ } _%>
|
|
36
36
|
<%_ if (communicationSpringWebsocket) { _%>
|
|
@@ -46,7 +46,7 @@ const AdministrationRoutes = () => (
|
|
|
46
46
|
<%_ if (communicationSpringWebsocket) { _%>
|
|
47
47
|
<Route path="tracker" element={<Tracker />} />
|
|
48
48
|
<%_ } _%>
|
|
49
|
-
<%_ if (applicationTypeGateway &&
|
|
49
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
50
50
|
<Route path="gateway" element={<Gateway />} />
|
|
51
51
|
<%_ } _%>
|
|
52
52
|
<%_ if (withAdminUi) { _%>
|
package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs
CHANGED
|
@@ -27,7 +27,7 @@ import { Translate, translate } from 'react-jhipster';
|
|
|
27
27
|
|
|
28
28
|
const adminMenuItems = () => (
|
|
29
29
|
<>
|
|
30
|
-
<%_ if (applicationTypeGateway &&
|
|
30
|
+
<%_ if (applicationTypeGateway && serviceDiscoveryAny) { _%>
|
|
31
31
|
<MenuItem icon="road" to="/admin/gateway"><Translate contentKey="global.menu.admin.gateway">Gateway</Translate></MenuItem>
|
|
32
32
|
<%_ } _%>
|
|
33
33
|
<%_ if (!skipUserManagement) { _%>
|
|
@@ -40,7 +40,9 @@ import authentication, {
|
|
|
40
40
|
clearAuth,
|
|
41
41
|
initialState,
|
|
42
42
|
} from 'app/shared/reducers/authentication';
|
|
43
|
-
<% if (enableTranslation) { %>
|
|
43
|
+
<%_ if (enableTranslation) { _%>
|
|
44
|
+
import { updateLocale, setLocale } from 'app/shared/reducers/locale';
|
|
45
|
+
<%_ } _%>
|
|
44
46
|
|
|
45
47
|
describe('Authentication reducer tests', () => {
|
|
46
48
|
function isAccountEmpty(state): boolean {
|
|
@@ -204,7 +206,11 @@ describe('Authentication reducer tests', () => {
|
|
|
204
206
|
const resolvedObject = { value: 'whatever' };
|
|
205
207
|
beforeEach(() => {
|
|
206
208
|
const mockStore = configureStore([thunk]);
|
|
207
|
-
|
|
209
|
+
<%_ if (enableTranslation) { _%>
|
|
210
|
+
store = mockStore({ authentication: { account: { langKey: '<%= nativeLanguage %>' } }, locale: { loadedLocales: ['<%= nativeLanguage %>'] } });
|
|
211
|
+
<%_ } else { _%>
|
|
212
|
+
store = mockStore({ authentication: { account: { } } });
|
|
213
|
+
<%_ } _%>
|
|
208
214
|
axios.get = sinon.stub().returns(Promise.resolve(resolvedObject));
|
|
209
215
|
});
|
|
210
216
|
|
|
@@ -218,15 +224,18 @@ describe('Authentication reducer tests', () => {
|
|
|
218
224
|
type: getAccount.fulfilled.type,
|
|
219
225
|
payload: resolvedObject
|
|
220
226
|
},
|
|
221
|
-
|
|
227
|
+
{
|
|
228
|
+
type: setLocale.pending.type,
|
|
229
|
+
},
|
|
230
|
+
updateLocale('en'),
|
|
231
|
+
{
|
|
232
|
+
type: setLocale.fulfilled.type,
|
|
233
|
+
payload: 'en',
|
|
234
|
+
},
|
|
222
235
|
<%_ } _%>
|
|
223
236
|
];
|
|
224
237
|
await store.dispatch(getSession());
|
|
225
|
-
expect(store.getActions()
|
|
226
|
-
<%_ if (enableTranslation) { _%>
|
|
227
|
-
expect(store.getActions()[1]).toMatchObject(expectedActions[1]);
|
|
228
|
-
expect(store.getActions()[2]).toMatchObject(expectedActions[2]);
|
|
229
|
-
<%_ } _%>
|
|
238
|
+
expect(store.getActions()).toMatchObject(expectedActions);
|
|
230
239
|
});
|
|
231
240
|
|
|
232
241
|
it('dispatches LOGOUT actions', async () => {
|
package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.ts.ejs
CHANGED
|
@@ -56,7 +56,7 @@ export const getSession = (): AppThunk => <% if (enableTranslation) { %>async<%
|
|
|
56
56
|
const { account } = getState().authentication;
|
|
57
57
|
if (account && account.langKey) {
|
|
58
58
|
const langKey = Storage.session.get('locale', account.langKey);
|
|
59
|
-
dispatch(setLocale(langKey));
|
|
59
|
+
await dispatch(setLocale(langKey));
|
|
60
60
|
}
|
|
61
61
|
<%_ } else { _%>
|
|
62
62
|
dispatch(getAccount());
|
package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs
CHANGED
|
@@ -4,7 +4,9 @@ import configureStore from 'redux-mock-store';
|
|
|
4
4
|
import thunk from 'redux-thunk';
|
|
5
5
|
import { TranslatorContext } from 'react-jhipster';
|
|
6
6
|
|
|
7
|
-
import locale, { setLocale, updateLocale } from 'app/shared/reducers/locale';
|
|
7
|
+
import locale, { setLocale, updateLocale, loaded, addTranslationSourcePrefix } from 'app/shared/reducers/locale';
|
|
8
|
+
|
|
9
|
+
const defaultLocale = '<%= nativeLanguage %>';
|
|
8
10
|
|
|
9
11
|
describe('Locale reducer tests', () => {
|
|
10
12
|
it('should return the initial state', () => {
|
|
@@ -15,19 +17,19 @@ describe('Locale reducer tests', () => {
|
|
|
15
17
|
});
|
|
16
18
|
|
|
17
19
|
it('should correctly set the first time locale', () => {
|
|
18
|
-
const localeState = locale(undefined, updateLocale(
|
|
20
|
+
const localeState = locale(undefined, updateLocale(defaultLocale));
|
|
19
21
|
expect(localeState).toMatchObject({
|
|
20
|
-
currentLocale:
|
|
22
|
+
currentLocale: defaultLocale
|
|
21
23
|
});
|
|
22
|
-
expect(TranslatorContext.context.locale).toEqual(
|
|
24
|
+
expect(TranslatorContext.context.locale).toEqual(defaultLocale);
|
|
23
25
|
});
|
|
24
26
|
|
|
25
27
|
it('should correctly detect update in current locale state', () => {
|
|
26
|
-
TranslatorContext.setLocale(
|
|
27
|
-
expect(TranslatorContext.context.locale).toEqual(
|
|
28
|
+
TranslatorContext.setLocale(defaultLocale);
|
|
29
|
+
expect(TranslatorContext.context.locale).toEqual(defaultLocale);
|
|
28
30
|
const localeState = locale(
|
|
29
31
|
{
|
|
30
|
-
currentLocale:
|
|
32
|
+
currentLocale: defaultLocale,
|
|
31
33
|
sourcePrefixes: [],
|
|
32
34
|
lastChange: new Date().getTime(),
|
|
33
35
|
loadedKeys: [],
|
|
@@ -40,22 +42,177 @@ describe('Locale reducer tests', () => {
|
|
|
40
42
|
expect(TranslatorContext.context.locale).toEqual('es');
|
|
41
43
|
});
|
|
42
44
|
|
|
43
|
-
describe('
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
describe('setLocale reducer', () => {
|
|
46
|
+
describe('with default language loaded', () => {
|
|
47
|
+
let store;
|
|
48
|
+
beforeEach(() => {
|
|
49
|
+
store = configureStore([thunk])({ locale: { loadedLocales: [defaultLocale], loadedKeys: [] } });
|
|
50
|
+
axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('dispatches updateLocale action for default locale', async () => {
|
|
54
|
+
TranslatorContext.setDefaultLocale(defaultLocale);
|
|
55
|
+
expect(Object.keys(TranslatorContext.context.translations)).not.toContainEqual(defaultLocale);
|
|
56
|
+
|
|
57
|
+
const expectedActions = [
|
|
58
|
+
{
|
|
59
|
+
type: setLocale.pending.type,
|
|
60
|
+
},
|
|
61
|
+
updateLocale(defaultLocale),
|
|
62
|
+
{
|
|
63
|
+
type: setLocale.fulfilled.type,
|
|
64
|
+
payload: defaultLocale,
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
await store.dispatch(setLocale(defaultLocale));
|
|
69
|
+
expect(store.getActions()).toMatchObject(expectedActions);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
describe('with no language loaded', () => {
|
|
74
|
+
let store;
|
|
75
|
+
beforeEach(() => {
|
|
76
|
+
store = configureStore([thunk])({ locale: { sourcePrefixes: [], loadedLocales: [], loadedKeys: [] } });
|
|
77
|
+
axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('dispatches loaded and updateLocale action for default locale', async () => {
|
|
81
|
+
TranslatorContext.setDefaultLocale(defaultLocale);
|
|
82
|
+
expect(Object.keys(TranslatorContext.context.translations)).not.toContainEqual(defaultLocale);
|
|
83
|
+
|
|
84
|
+
const expectedActions = [
|
|
85
|
+
{
|
|
86
|
+
type: setLocale.pending.type,
|
|
87
|
+
},
|
|
88
|
+
loaded({ keys: [defaultLocale], locale: defaultLocale }),
|
|
89
|
+
updateLocale(defaultLocale),
|
|
90
|
+
{
|
|
91
|
+
type: setLocale.fulfilled.type,
|
|
92
|
+
payload: defaultLocale,
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
|
|
96
|
+
await store.dispatch(setLocale(defaultLocale));
|
|
97
|
+
expect(store.getActions()).toMatchObject(expectedActions);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
describe('addTranslationSourcePrefix reducer', () => {
|
|
103
|
+
const sourcePrefix = 'foo/';
|
|
104
|
+
|
|
105
|
+
describe('with no prefixes and keys loaded', () => {
|
|
106
|
+
let store;
|
|
107
|
+
beforeEach(() => {
|
|
108
|
+
store = configureStore([thunk])({
|
|
109
|
+
locale: { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [] },
|
|
110
|
+
});
|
|
111
|
+
axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('dispatches loaded action with keys and sourcePrefix', async () => {
|
|
115
|
+
const expectedActions = [
|
|
116
|
+
{
|
|
117
|
+
type: addTranslationSourcePrefix.pending.type,
|
|
118
|
+
},
|
|
119
|
+
loaded({ keys: [`${sourcePrefix}${defaultLocale}`], sourcePrefix }),
|
|
120
|
+
{
|
|
121
|
+
type: addTranslationSourcePrefix.fulfilled.type,
|
|
122
|
+
payload: `${sourcePrefix}${defaultLocale}`,
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
|
|
126
|
+
await store.dispatch(addTranslationSourcePrefix(sourcePrefix));
|
|
127
|
+
expect(store.getActions()).toMatchObject(expectedActions);
|
|
128
|
+
});
|
|
48
129
|
});
|
|
49
130
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
131
|
+
describe('with prefix already added', () => {
|
|
132
|
+
let store;
|
|
133
|
+
beforeEach(() => {
|
|
134
|
+
store = configureStore([thunk])({
|
|
135
|
+
locale: { currentLocale: defaultLocale, sourcePrefixes: [sourcePrefix], loadedLocales: [], loadedKeys: [] },
|
|
136
|
+
});
|
|
137
|
+
axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it("doesn't dispatches loaded action", async () => {
|
|
141
|
+
const expectedActions = [
|
|
142
|
+
{
|
|
143
|
+
type: addTranslationSourcePrefix.pending.type,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: addTranslationSourcePrefix.fulfilled.type,
|
|
147
|
+
payload: `${sourcePrefix}${defaultLocale}`,
|
|
148
|
+
},
|
|
149
|
+
];
|
|
150
|
+
|
|
151
|
+
await store.dispatch(addTranslationSourcePrefix(sourcePrefix));
|
|
152
|
+
expect(store.getActions()).toMatchObject(expectedActions);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
describe('with key already loaded', () => {
|
|
157
|
+
let store;
|
|
158
|
+
beforeEach(() => {
|
|
159
|
+
store = configureStore([thunk])({
|
|
160
|
+
locale: { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [`${sourcePrefix}${defaultLocale}`] },
|
|
161
|
+
});
|
|
162
|
+
axios.get = sinon.stub().returns(Promise.resolve({ key: 'value' }));
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it("doesn't dispatches loaded action", async () => {
|
|
166
|
+
const expectedActions = [
|
|
167
|
+
{
|
|
168
|
+
type: addTranslationSourcePrefix.pending.type,
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
type: addTranslationSourcePrefix.fulfilled.type,
|
|
172
|
+
payload: `${sourcePrefix}${defaultLocale}`,
|
|
173
|
+
},
|
|
174
|
+
];
|
|
175
|
+
|
|
176
|
+
await store.dispatch(addTranslationSourcePrefix(sourcePrefix));
|
|
177
|
+
expect(store.getActions()).toMatchObject(expectedActions);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
describe('loaded reducer', () => {
|
|
183
|
+
describe('with empty state', () => {
|
|
184
|
+
let initialState;
|
|
185
|
+
beforeEach(() => {
|
|
186
|
+
initialState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [] };
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it("and empty parameter, don't adds anything", () => {
|
|
190
|
+
const expectedState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: [] };
|
|
191
|
+
|
|
192
|
+
const localeState = locale(initialState, loaded({}));
|
|
193
|
+
expect(localeState).toMatchObject(expectedState);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
it('and keys parameter, adds to loadedKeys', () => {
|
|
197
|
+
const expectedState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: [], loadedKeys: ['foo'] };
|
|
198
|
+
|
|
199
|
+
const localeState = locale(initialState, loaded({ keys: ['foo'] }));
|
|
200
|
+
expect(localeState).toMatchObject(expectedState);
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
it('and sourcePrefix parameter, adds to sourcePrefixes', () => {
|
|
204
|
+
const expectedState = { currentLocale: defaultLocale, sourcePrefixes: ['foo'], loadedLocales: [], loadedKeys: [] };
|
|
205
|
+
|
|
206
|
+
const localeState = locale(initialState, loaded({ sourcePrefix: 'foo' }));
|
|
207
|
+
expect(localeState).toMatchObject(expectedState);
|
|
208
|
+
});
|
|
54
209
|
|
|
55
|
-
|
|
210
|
+
it('and locale parameter, adds to loadedLocales', () => {
|
|
211
|
+
const expectedState = { currentLocale: defaultLocale, sourcePrefixes: [], loadedLocales: ['foo'], loadedKeys: [] };
|
|
56
212
|
|
|
57
|
-
|
|
58
|
-
|
|
213
|
+
const localeState = locale(initialState, loaded({ locale: 'foo' }));
|
|
214
|
+
expect(localeState).toMatchObject(expectedState);
|
|
215
|
+
});
|
|
59
216
|
});
|
|
60
217
|
});
|
|
61
218
|
});
|