generator-jhipster 7.2.0 → 7.4.1

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.
Files changed (313) hide show
  1. package/cli/environment-builder.js +1 -0
  2. package/cli/import-jdl.js +3 -2
  3. package/cli/jdl.js +1 -0
  4. package/cli/jhipster-command.js +2 -2
  5. package/cli/program.js +32 -29
  6. package/generators/app/index.js +35 -26
  7. package/generators/aws/index.js +8 -8
  8. package/generators/aws/lib/eb.js +1 -1
  9. package/generators/azure-app-service/index.js +16 -9
  10. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +2 -2
  11. package/generators/azure-spring-cloud/index.js +16 -9
  12. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +2 -2
  13. package/generators/bootstrap/index.js +57 -61
  14. package/generators/ci-cd/index.js +11 -8
  15. package/generators/ci-cd/templates/github-actions.yml.ejs +1 -1
  16. package/generators/ci-cd/templates/travis.yml.ejs +9 -4
  17. package/generators/client/__workflow/devserver-angular.json +1 -1
  18. package/generators/client/__workflow/devserver-react.json +1 -1
  19. package/generators/client/__workflow/devserver-vue.json +1 -1
  20. package/generators/client/files-angular.js +6 -0
  21. package/generators/client/files-common.js +6 -2
  22. package/generators/client/files-react.js +13 -2
  23. package/generators/client/files-vue.js +56 -6
  24. package/generators/client/index.js +114 -32
  25. package/generators/client/needle-api/needle-client-angular.js +1 -1
  26. package/generators/client/needle-api/needle-client-vue.js +57 -7
  27. package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
  28. package/generators/client/templates/angular/package.json +19 -19
  29. package/generators/client/templates/angular/package.json.ejs +2 -1
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +52 -54
  31. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +65 -0
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.spec.ts.ejs +35 -37
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.spec.ts.ejs +78 -80
  34. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.service.spec.ts.ejs +41 -0
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +73 -75
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +62 -0
  37. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +44 -46
  38. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +61 -0
  39. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.spec.ts.ejs +116 -118
  40. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.service.spec.ts.ejs +66 -0
  41. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +75 -77
  42. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +74 -76
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +48 -50
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.service.spec.ts.ejs +50 -52
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +45 -47
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +66 -0
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +99 -101
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +61 -63
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.service.spec.ts.ejs +19 -21
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +28 -30
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.service.spec.ts.ejs +62 -64
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +35 -37
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +40 -42
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +87 -89
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/service/user-management.service.spec.ts.ejs +41 -43
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +81 -83
  58. package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +3 -0
  59. package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +178 -180
  60. package/generators/client/templates/angular/src/main/webapp/app/core/config/application-config.service.ts.ejs +9 -0
  61. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.spec.ts.ejs +87 -89
  62. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.spec.ts.ejs +93 -95
  63. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +166 -168
  64. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +66 -68
  65. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +27 -29
  66. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.spec.ts.ejs +112 -114
  67. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +132 -134
  68. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +29 -31
  69. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +2 -3
  70. package/generators/client/templates/common/README.md.jhi.client.ejs +34 -0
  71. package/generators/client/templates/common/package.json +7 -7
  72. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
  73. package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
  74. package/generators/client/templates/react/package.json +57 -56
  75. package/generators/client/templates/react/package.json.ejs +5 -2
  76. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
  77. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +2 -2
  78. package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +2 -2
  79. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
  80. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
  81. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
  82. package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  83. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +1 -1
  84. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
  85. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
  86. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
  87. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +17 -1
  88. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +13 -1
  89. package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
  90. package/generators/client/templates/vue/package.json +40 -49
  91. package/generators/client/templates/vue/package.json.ejs +14 -18
  92. package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +6 -5
  93. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
  94. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +1 -1
  95. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
  96. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
  97. package/generators/client/templates/vue/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +5 -4
  98. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +9 -0
  99. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-view.component.ts.ejs +5 -0
  100. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management.component.ts.ejs +5 -0
  101. package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +16 -6
  102. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +27 -8
  103. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
  104. package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
  105. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
  106. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
  107. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +14 -0
  108. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
  109. package/generators/client/templates/vue/{webpack/utils.js.ejs → src/main/webapp/app/index.ts.ejs} +1 -12
  110. package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -9
  111. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +23 -11
  112. package/generators/client/templates/vue/src/main/webapp/app/router/admin.ts.ejs +4 -4
  113. package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +45 -3
  114. package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +19 -3
  115. package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +61 -0
  116. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +0 -2
  117. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +3 -1
  118. package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +17 -3
  119. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +25 -10
  120. package/generators/client/templates/vue/src/test/javascript/spec/app/account/account.service.spec.ts.ejs +2 -2
  121. package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +2 -2
  122. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.component.spec.ts.ejs +12 -12
  123. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/tracker/tracker.service.spec.ts.ejs +2 -1
  124. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +5 -1
  125. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-view.component.spec.ts.ejs +2 -1
  126. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +5 -1
  127. package/generators/client/templates/vue/src/test/javascript/spec/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +10 -4
  128. package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
  129. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
  130. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
  131. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
  132. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/alert/alert.service.spec.ts.ejs +124 -0
  133. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +0 -1
  134. package/generators/client/templates/vue/tsconfig.json.ejs +6 -10
  135. package/generators/client/templates/vue/tsconfig.spec.json.ejs +37 -0
  136. package/generators/client/templates/vue/webpack/config.js.ejs +50 -0
  137. package/generators/client/templates/vue/webpack/vue.utils.js.ejs +33 -32
  138. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +152 -126
  139. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -76
  140. package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
  141. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +5 -41
  142. package/generators/cloudfoundry/index.js +9 -9
  143. package/generators/common/index.js +12 -10
  144. package/generators/common/templates/.husky/pre-commit +1 -1
  145. package/generators/common/templates/.prettierrc.ejs +1 -1
  146. package/generators/common/templates/README.md.jhi.ejs +21 -0
  147. package/generators/common/templates/package.json +4 -4
  148. package/generators/cypress/index.js +12 -9
  149. package/generators/cypress/templates/cypress.json.ejs +9 -2
  150. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +4 -4
  151. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +30 -2
  152. package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +4 -4
  153. package/generators/cypress/templates/src/test/javascript/cypress/support/index.ts.ejs +1 -1
  154. package/generators/cypress/templates/src/test/javascript/cypress/support/management.ts.ejs +1 -1
  155. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +1 -1
  156. package/generators/database-changelog/index.js +33 -22
  157. package/generators/database-changelog-liquibase/index.js +12 -8
  158. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +1 -1
  159. package/generators/docker-compose/index.js +11 -12
  160. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +13 -12
  161. package/generators/entities/index.js +35 -26
  162. package/generators/entities-client/index.js +10 -7
  163. package/generators/entity/index.js +49 -29
  164. package/generators/entity-client/files.js +7 -16
  165. package/generators/entity-client/index.js +74 -11
  166. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.spec.ts.ejs +42 -44
  167. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.spec.ts.ejs +58 -60
  168. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +1 -1
  169. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +105 -107
  170. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +8 -1
  171. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +52 -54
  172. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +1 -1
  173. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +173 -175
  174. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +2 -4
  175. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +193 -195
  176. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +7 -0
  177. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +269 -109
  178. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +5 -2
  179. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +17 -14
  180. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +11 -13
  181. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-details.component.ts.ejs +5 -0
  182. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +23 -8
  183. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.vue.ejs +6 -9
  184. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +9 -1
  185. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  186. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
  187. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-details.component.spec.ts.ejs +2 -1
  188. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +8 -1
  189. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +8 -2
  190. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
  191. package/generators/entity-i18n/index.js +7 -4
  192. package/generators/entity-server/files-couchbase.js +2 -2
  193. package/generators/entity-server/files.js +35 -30
  194. package/generators/entity-server/index.js +12 -8
  195. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
  196. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +1 -1
  197. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +6 -2
  198. package/generators/entity-server/templates/src/main/java/package/domain/enumeration/Enum.java.ejs +1 -1
  199. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +2 -2
  200. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +17 -30
  201. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +5 -5
  202. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +46 -0
  203. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +3 -3
  204. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +2 -2
  205. package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +8 -8
  206. package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +4 -4
  207. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +4 -4
  208. package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +7 -3
  209. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +8 -8
  210. package/generators/entity-server/templates/src/main/java/package/service/mapper/BaseEntityMapper.java.ejs +1 -1
  211. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +7 -3
  212. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +51 -53
  213. package/generators/entity-server/templates/src/test/java/package/domain/EntityTest.java.ejs +1 -1
  214. package/generators/entity-server/templates/src/test/java/package/repository/search/EntitySearchRepositoryMockConfiguration.java.ejs +1 -1
  215. package/generators/entity-server/templates/src/test/java/package/service/dto/EntityDTOTest.java.ejs +1 -1
  216. package/generators/entity-server/templates/src/test/java/package/service/mapper/EntityMapperTest.java.ejs +1 -1
  217. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +17 -14
  218. package/generators/gae/index.js +10 -10
  219. package/generators/generator-base-blueprint.js +14 -46
  220. package/generators/generator-base-private.js +42 -22
  221. package/generators/generator-base.js +57 -20
  222. package/generators/generator-constants.js +29 -21
  223. package/generators/generator-transforms.js +39 -27
  224. package/generators/heroku/index.js +27 -48
  225. package/generators/init/constants.cjs +1 -1
  226. package/generators/init/templates/.husky/pre-commit +1 -1
  227. package/generators/java/constants.cjs +1 -1
  228. package/generators/kubernetes/files.js +3 -0
  229. package/generators/kubernetes/index.js +10 -10
  230. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -1
  231. package/generators/kubernetes/templates/deployment.yml.ejs +8 -3
  232. package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
  233. package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
  234. package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
  235. package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
  236. package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
  237. package/generators/kubernetes/templates/istio/gateway.yml.ejs +7 -5
  238. package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
  239. package/generators/kubernetes-base.js +1 -0
  240. package/generators/kubernetes-helm/files.js +3 -8
  241. package/generators/kubernetes-helm/index.js +10 -10
  242. package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +0 -1
  243. package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +27 -0
  244. package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +0 -11
  245. package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +7 -2
  246. package/generators/kubernetes-helm/templates/app/values.yml.ejs +68 -5
  247. package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +17 -0
  248. package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +2 -2
  249. package/generators/kubernetes-knative/index.js +10 -10
  250. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +6 -4
  251. package/generators/kubernetes-knative/templates/service.yml.ejs +1 -1
  252. package/generators/languages/index.js +13 -13
  253. package/generators/languages/templates/src/main/webapp/i18n/hr/reset.json.ejs +1 -2
  254. package/generators/languages/templates/src/main/webapp/i18n/vi/login.json +1 -1
  255. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
  256. package/generators/openapi-client/index.js +13 -10
  257. package/generators/openshift/index.js +10 -11
  258. package/generators/openshift/templates/deployment.yml.ejs +1 -1
  259. package/generators/page/index.js +12 -10
  260. package/generators/server/__snapshots__/generator.spec.mjs.snap +12 -0
  261. package/generators/server/files-sql.js +52 -0
  262. package/generators/server/files.js +15 -0
  263. package/generators/server/index.js +100 -33
  264. package/generators/server/needle-api/needle-server-cache.js +4 -6
  265. package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +1 -1
  266. package/generators/server/templates/build.gradle.ejs +17 -1
  267. package/generators/server/templates/gradle.properties.ejs +11 -11
  268. package/generators/server/templates/npmw +1 -1
  269. package/generators/server/templates/npmw.cmd +1 -1
  270. package/generators/server/templates/pom.xml.ejs +128 -9
  271. package/generators/server/templates/settings.gradle.ejs +9 -0
  272. package/generators/server/templates/sql/reactive/src/main/java/package/repository/UserSqlHelper.java.ejs +48 -0
  273. package/generators/server/templates/src/main/docker/app.yml.ejs +2 -1
  274. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +13 -12
  275. package/generators/server/templates/src/main/java/package/aop/logging/LoggingAspect.java.ejs +1 -1
  276. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_cassandra.java.ejs +0 -6
  277. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_sql.java.ejs +2 -2
  278. package/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +1 -1
  279. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +0 -2
  280. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +2 -5
  281. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +9 -1
  282. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +0 -1
  283. package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
  284. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +0 -23
  285. package/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +0 -2
  286. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +29 -4
  287. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +21 -9
  288. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +13 -5
  289. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -1
  290. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -1
  291. package/generators/server/templates/src/main/resources/config/application.yml.ejs +7 -7
  292. package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
  293. package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
  294. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +6 -1
  295. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
  296. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
  297. package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +16 -2
  298. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +63 -0
  299. package/generators/spring-controller/index.js +9 -7
  300. package/generators/spring-service/index.js +10 -7
  301. package/generators/upgrade/index.js +4 -5
  302. package/generators/utils.js +2 -2
  303. package/generators/workspaces/index.js +16 -7
  304. package/jdl/jhipster/default-application-options.js +9 -7
  305. package/package.json +23 -23
  306. package/utils/entity.js +21 -4
  307. package/utils/field.js +12 -2
  308. package/utils/multi-step-transform/index.js +8 -8
  309. package/generators/client/templates/react/.npmrc.ejs +0 -1
  310. package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -17
  311. package/generators/client/templates/vue/webpack/env.js.ejs +0 -67
  312. package/generators/client/templates/vue/webpack/loader.conf.js.ejs +0 -20
  313. package/generators/client/templates/vue/webpack/prod.env.js.ejs +0 -15
@@ -37,135 +37,133 @@ import { LoginService } from 'app/login/login.service';
37
37
 
38
38
  import { HomeComponent } from './home.component';
39
39
 
40
- describe('Component Tests', () => {
41
- describe('Home Component', () => {
42
- let comp: HomeComponent;
43
- let fixture: ComponentFixture<HomeComponent>;
44
- let mockAccountService: AccountService;
40
+ describe('Home Component', () => {
41
+ let comp: HomeComponent;
42
+ let fixture: ComponentFixture<HomeComponent>;
43
+ let mockAccountService: AccountService;
45
44
  <%_ if (!authenticationTypeOauth2) { _%>
46
- let mockRouter: Router;
45
+ let mockRouter: Router;
47
46
  <%_ } else { _%>
48
- let mockLoginService: LoginService;
47
+ let mockLoginService: LoginService;
49
48
  <%_ } _%>
50
- const account: Account = {
51
- activated: true,
52
- authorities: [],
53
- email: '',
54
- firstName: null,
55
- langKey: '',
56
- lastName: null,
57
- login: 'login',
58
- imageUrl: null,
59
- };
60
-
61
- beforeEach(
62
- waitForAsync(() => {
63
- TestBed.configureTestingModule({
64
- declarations: [HomeComponent],
65
- providers: [AccountService, <% if (!authenticationTypeOauth2) { %>Router<% } else { %>LoginService<% } %>],
66
- })
67
- .overrideTemplate(HomeComponent, '')
68
- .compileComponents();
49
+ const account: Account = {
50
+ activated: true,
51
+ authorities: [],
52
+ email: '',
53
+ firstName: null,
54
+ langKey: '',
55
+ lastName: null,
56
+ login: 'login',
57
+ imageUrl: null,
58
+ };
59
+
60
+ beforeEach(
61
+ waitForAsync(() => {
62
+ TestBed.configureTestingModule({
63
+ declarations: [HomeComponent],
64
+ providers: [AccountService, <% if (!authenticationTypeOauth2) { %>Router<% } else { %>LoginService<% } %>],
69
65
  })
70
- );
71
-
72
- beforeEach(() => {
73
- fixture = TestBed.createComponent(HomeComponent);
74
- comp = fixture.componentInstance;
75
- mockAccountService = TestBed.inject(AccountService);
76
- mockAccountService.identity = jest.fn(() => of(null));
77
- mockAccountService.getAuthenticationState = jest.fn(() => of(null));
66
+ .overrideTemplate(HomeComponent, '')
67
+ .compileComponents();
68
+ })
69
+ );
70
+
71
+ beforeEach(() => {
72
+ fixture = TestBed.createComponent(HomeComponent);
73
+ comp = fixture.componentInstance;
74
+ mockAccountService = TestBed.inject(AccountService);
75
+ mockAccountService.identity = jest.fn(() => of(null));
76
+ mockAccountService.getAuthenticationState = jest.fn(() => of(null));
78
77
  <%_ if (!authenticationTypeOauth2) { _%>
79
- mockRouter = TestBed.inject(Router);
78
+ mockRouter = TestBed.inject(Router);
80
79
  <%_ } else { _%>
81
- mockLoginService = TestBed.inject(LoginService);
80
+ mockLoginService = TestBed.inject(LoginService);
82
81
  <%_ } _%>
83
- });
82
+ });
84
83
 
85
- describe('ngOnInit', () => {
86
- it('Should synchronize account variable with current account', () => {
84
+ describe('ngOnInit', () => {
85
+ it('Should synchronize account variable with current account', () => {
87
86
  <%_ if (!authenticationTypeOauth2) { _%>
88
- // GIVEN
89
- const authenticationState = new Subject<Account | null>();
90
- mockAccountService.getAuthenticationState = jest.fn(() => authenticationState.asObservable());
87
+ // GIVEN
88
+ const authenticationState = new Subject<Account | null>();
89
+ mockAccountService.getAuthenticationState = jest.fn(() => authenticationState.asObservable());
91
90
 
92
- // WHEN
93
- comp.ngOnInit();
91
+ // WHEN
92
+ comp.ngOnInit();
94
93
 
95
- // THEN
96
- expect(comp.account).toBeNull();
94
+ // THEN
95
+ expect(comp.account).toBeNull();
97
96
 
98
- // WHEN
99
- authenticationState.next(account);
97
+ // WHEN
98
+ authenticationState.next(account);
100
99
 
101
- // THEN
102
- expect(comp.account).toEqual(account);
100
+ // THEN
101
+ expect(comp.account).toEqual(account);
103
102
 
104
- // WHEN
105
- authenticationState.next(null);
103
+ // WHEN
104
+ authenticationState.next(null);
106
105
 
107
- // THEN
108
- expect(comp.account).toBeNull();
106
+ // THEN
107
+ expect(comp.account).toBeNull();
109
108
  <%_ } else { _%>
110
- // GIVEN
111
- mockAccountService.identity = jest.fn(() => of(account));
109
+ // GIVEN
110
+ mockAccountService.identity = jest.fn(() => of(account));
112
111
 
113
- // WHEN
114
- comp.ngOnInit();
112
+ // WHEN
113
+ comp.ngOnInit();
115
114
 
116
- // THEN
117
- expect(comp.account).toEqual(account);
115
+ // THEN
116
+ expect(comp.account).toEqual(account);
118
117
  <%_ } _%>
119
- });
120
118
  });
119
+ });
121
120
 
122
- describe('login', () => {
121
+ describe('login', () => {
123
122
  <%_ if (!authenticationTypeOauth2) { _%>
124
- it('Should navigate to /login on login', () => {
125
- // WHEN
126
- comp.login();
123
+ it('Should navigate to /login on login', () => {
124
+ // WHEN
125
+ comp.login();
127
126
 
128
- // THEN
129
- expect(mockRouter.navigate).toHaveBeenCalledWith(['/login']);
130
- });
127
+ // THEN
128
+ expect(mockRouter.navigate).toHaveBeenCalledWith(['/login']);
129
+ });
131
130
  <%_ } else { _%>
132
- it('Should call loginService.login on login', () => {
133
- // WHEN
134
- comp.login();
131
+ it('Should call loginService.login on login', () => {
132
+ // WHEN
133
+ comp.login();
135
134
 
136
- // THEN
137
- expect(mockLoginService.login).toHaveBeenCalled();
138
- });
139
- <%_ } _%>
135
+ // THEN
136
+ expect(mockLoginService.login).toHaveBeenCalled();
140
137
  });
138
+ <%_ } _%>
139
+ });
141
140
 
142
141
  <%_ if (!authenticationTypeOauth2) { _%>
143
- describe('ngOnDestroy', () => {
144
- it('Should destroy authentication state subscription on component destroy', () => {
145
- // GIVEN
146
- const authenticationState = new Subject<Account | null>();
147
- mockAccountService.getAuthenticationState = jest.fn(() => authenticationState.asObservable());
142
+ describe('ngOnDestroy', () => {
143
+ it('Should destroy authentication state subscription on component destroy', () => {
144
+ // GIVEN
145
+ const authenticationState = new Subject<Account | null>();
146
+ mockAccountService.getAuthenticationState = jest.fn(() => authenticationState.asObservable());
148
147
 
149
- // WHEN
150
- comp.ngOnInit();
148
+ // WHEN
149
+ comp.ngOnInit();
151
150
 
152
- // THEN
153
- expect(comp.account).toBeNull();
151
+ // THEN
152
+ expect(comp.account).toBeNull();
154
153
 
155
- // WHEN
156
- authenticationState.next(account);
154
+ // WHEN
155
+ authenticationState.next(account);
157
156
 
158
- // THEN
159
- expect(comp.account).toEqual(account);
157
+ // THEN
158
+ expect(comp.account).toEqual(account);
160
159
 
161
- // WHEN
162
- comp.ngOnDestroy();
163
- authenticationState.next(null);
160
+ // WHEN
161
+ comp.ngOnDestroy();
162
+ authenticationState.next(null);
164
163
 
165
- // THEN
166
- expect(comp.account).toEqual(account);
167
- });
164
+ // THEN
165
+ expect(comp.account).toEqual(account);
168
166
  });
169
- <%_ } _%>
170
167
  });
168
+ <%_ } _%>
171
169
  });
@@ -33,234 +33,232 @@ import { FindLanguageFromKeyPipe } from 'app/shared/language/find-language-from-
33
33
 
34
34
  import { MainComponent } from './main.component';
35
35
 
36
- describe('Component Tests', () => {
37
- describe('MainComponent', () => {
38
- let comp: MainComponent;
39
- let fixture: ComponentFixture<MainComponent>;
40
- let titleService: Title;
36
+ describe('MainComponent', () => {
37
+ let comp: MainComponent;
38
+ let fixture: ComponentFixture<MainComponent>;
39
+ let titleService: Title;
41
40
  <%_ if (enableTranslation) { _%>
42
- let translateService: TranslateService;
41
+ let translateService: TranslateService;
43
42
  <%_ if (enableI18nRTL) { _%>
44
- let findLanguageFromKeyPipe: FindLanguageFromKeyPipe;
43
+ let findLanguageFromKeyPipe: FindLanguageFromKeyPipe;
45
44
  <%_ } _%>
46
45
  <%_ } _%>
47
- let mockAccountService: AccountService;
48
- const routerEventsSubject = new Subject<RouterEvent>();
49
- const routerState: any = { snapshot: { root: { data: {} } } };
50
- class MockRouter {
51
- events = routerEventsSubject;
52
- routerState = routerState;
53
- }
54
-
55
- beforeEach(
56
- waitForAsync(() => {
57
- TestBed.configureTestingModule({
46
+ let mockAccountService: AccountService;
47
+ const routerEventsSubject = new Subject<RouterEvent>();
48
+ const routerState: any = { snapshot: { root: { data: {} } } };
49
+ class MockRouter {
50
+ events = routerEventsSubject;
51
+ routerState = routerState;
52
+ }
53
+
54
+ beforeEach(
55
+ waitForAsync(() => {
56
+ TestBed.configureTestingModule({
58
57
  <%_ if (enableTranslation) { _%>
59
- imports: [TranslateModule.forRoot()],
58
+ imports: [TranslateModule.forRoot()],
60
59
  <%_ } _%>
61
- declarations: [MainComponent],
62
- providers: [
63
- Title,
60
+ declarations: [MainComponent],
61
+ providers: [
62
+ Title,
64
63
  <%_ if (enableI18nRTL) { _%>
65
- FindLanguageFromKeyPipe,
64
+ FindLanguageFromKeyPipe,
66
65
  <%_ } _%>
67
- AccountService,
68
- {
69
- provide: Router,
70
- useClass: MockRouter,
71
- },
72
- ],
73
- })
74
- .overrideTemplate(MainComponent, '')
75
- .compileComponents();
66
+ AccountService,
67
+ {
68
+ provide: Router,
69
+ useClass: MockRouter,
70
+ },
71
+ ],
76
72
  })
77
- );
78
-
79
- beforeEach(() => {
80
- fixture = TestBed.createComponent(MainComponent);
81
- comp = fixture.componentInstance;
82
- titleService = TestBed.inject(Title);
73
+ .overrideTemplate(MainComponent, '')
74
+ .compileComponents();
75
+ })
76
+ );
77
+
78
+ beforeEach(() => {
79
+ fixture = TestBed.createComponent(MainComponent);
80
+ comp = fixture.componentInstance;
81
+ titleService = TestBed.inject(Title);
83
82
  <%_ if (enableTranslation) { _%>
84
- translateService = TestBed.inject(TranslateService);
83
+ translateService = TestBed.inject(TranslateService);
85
84
  <%_ if (enableI18nRTL) { _%>
86
- findLanguageFromKeyPipe = TestBed.inject(FindLanguageFromKeyPipe);
85
+ findLanguageFromKeyPipe = TestBed.inject(FindLanguageFromKeyPipe);
87
86
  <%_ } _%>
88
87
  <%_ } _%>
89
- mockAccountService = TestBed.inject(AccountService);
90
- mockAccountService.identity = jest.fn(() => of(null));
91
- mockAccountService.getAuthenticationState = jest.fn(() => of(null));
92
- });
88
+ mockAccountService = TestBed.inject(AccountService);
89
+ mockAccountService.identity = jest.fn(() => of(null));
90
+ mockAccountService.getAuthenticationState = jest.fn(() => of(null));
91
+ });
93
92
 
94
- describe('page title', () => {
95
- const defaultPageTitle = '<% if (enableTranslation) { %>global.title<% } else { %><%= humanizedBaseName %><% } %>';
96
- const parentRoutePageTitle = 'parentTitle';
97
- const childRoutePageTitle = 'childTitle';
98
- const navigationEnd = new NavigationEnd(1, '', '');
99
- const navigationStart = new NavigationStart(1, '');
93
+ describe('page title', () => {
94
+ const defaultPageTitle = '<% if (enableTranslation) { %>global.title<% } else { %><%= humanizedBaseName %><% } %>';
95
+ const parentRoutePageTitle = 'parentTitle';
96
+ const childRoutePageTitle = 'childTitle';
97
+ const navigationEnd = new NavigationEnd(1, '', '');
98
+ const navigationStart = new NavigationStart(1, '');
100
99
  <%_ if (enableTranslation) { _%>
101
- const langChangeEvent: LangChangeEvent = { lang: '<%= nativeLanguage %>', translations: null };
100
+ const langChangeEvent: LangChangeEvent = { lang: '<%= nativeLanguage %>', translations: null };
102
101
  <%_ } _%>
103
102
 
104
- beforeEach(() => {
105
- routerState.snapshot.root = { data: {} };
103
+ beforeEach(() => {
104
+ routerState.snapshot.root = { data: {} };
106
105
  <%_ if (enableTranslation) { _%>
107
- jest.spyOn(translateService, 'get').mockImplementation((key: string | string[]) => of(`${key as string} translated`));
108
- translateService.currentLang = '<%= nativeLanguage %>';
106
+ jest.spyOn(translateService, 'get').mockImplementation((key: string | string[]) => of(`${key as string} translated`));
107
+ translateService.currentLang = '<%= nativeLanguage %>';
109
108
  <%_ } _%>
110
- jest.spyOn(titleService, 'setTitle');
111
- comp.ngOnInit();
112
- });
109
+ jest.spyOn(titleService, 'setTitle');
110
+ comp.ngOnInit();
111
+ });
113
112
 
114
- describe('navigation end', () => {
115
- it('should set page title to default title if pageTitle is missing on routes', () => {
116
- // WHEN
117
- routerEventsSubject.next(navigationEnd);
113
+ describe('navigation end', () => {
114
+ it('should set page title to default title if pageTitle is missing on routes', () => {
115
+ // WHEN
116
+ routerEventsSubject.next(navigationEnd);
118
117
 
119
- // THEN
118
+ // THEN
120
119
  <%_ if (enableTranslation) { _%>
121
- expect(translateService.get).toHaveBeenCalledWith(defaultPageTitle);
120
+ expect(translateService.get).toHaveBeenCalledWith(defaultPageTitle);
122
121
  <%_ } _%>
123
- expect(titleService.setTitle).toHaveBeenCalledWith(defaultPageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
124
- });
122
+ expect(titleService.setTitle).toHaveBeenCalledWith(defaultPageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
123
+ });
125
124
 
126
- it('should set page title to root route pageTitle if there is no child routes', () => {
127
- // GIVEN
128
- routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
125
+ it('should set page title to root route pageTitle if there is no child routes', () => {
126
+ // GIVEN
127
+ routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
129
128
 
130
- // WHEN
131
- routerEventsSubject.next(navigationEnd);
129
+ // WHEN
130
+ routerEventsSubject.next(navigationEnd);
132
131
 
133
- // THEN
132
+ // THEN
134
133
  <%_ if (enableTranslation) { _%>
135
- expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
134
+ expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
136
135
  <%_ } _%>
137
- expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
138
- });
136
+ expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
137
+ });
139
138
 
140
- it('should set page title to child route pageTitle if child routes exist and pageTitle is set for child route', () => {
141
- // GIVEN
142
- routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
143
- routerState.snapshot.root.firstChild = { data: { pageTitle: childRoutePageTitle } };
139
+ it('should set page title to child route pageTitle if child routes exist and pageTitle is set for child route', () => {
140
+ // GIVEN
141
+ routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
142
+ routerState.snapshot.root.firstChild = { data: { pageTitle: childRoutePageTitle } };
144
143
 
145
- // WHEN
146
- routerEventsSubject.next(navigationEnd);
144
+ // WHEN
145
+ routerEventsSubject.next(navigationEnd);
147
146
 
148
- // THEN
147
+ // THEN
149
148
  <%_ if (enableTranslation) { _%>
150
- expect(translateService.get).toHaveBeenCalledWith(childRoutePageTitle);
149
+ expect(translateService.get).toHaveBeenCalledWith(childRoutePageTitle);
151
150
  <%_ } _%>
152
- expect(titleService.setTitle).toHaveBeenCalledWith(childRoutePageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
153
- });
151
+ expect(titleService.setTitle).toHaveBeenCalledWith(childRoutePageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
152
+ });
154
153
 
155
- it('should set page title to parent route pageTitle if child routes exists but pageTitle is not set for child route data', () => {
156
- // GIVEN
157
- routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
158
- routerState.snapshot.root.firstChild = { data: {} };
154
+ it('should set page title to parent route pageTitle if child routes exists but pageTitle is not set for child route data', () => {
155
+ // GIVEN
156
+ routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
157
+ routerState.snapshot.root.firstChild = { data: {} };
159
158
 
160
- // WHEN
161
- routerEventsSubject.next(navigationEnd);
159
+ // WHEN
160
+ routerEventsSubject.next(navigationEnd);
162
161
 
163
- // THEN
162
+ // THEN
164
163
  <%_ if (enableTranslation) { _%>
165
- expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
164
+ expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
166
165
  <%_ } _%>
167
- expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
168
- });
166
+ expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle<% if (enableTranslation) { %> + ' translated'<% } %>);
169
167
  });
168
+ });
170
169
 
171
- describe('navigation start', () => {
172
- it('should not set page title on navigation start', () => {
173
- // WHEN
174
- routerEventsSubject.next(navigationStart);
170
+ describe('navigation start', () => {
171
+ it('should not set page title on navigation start', () => {
172
+ // WHEN
173
+ routerEventsSubject.next(navigationStart);
175
174
 
176
- // THEN
177
- expect(titleService.setTitle).not.toHaveBeenCalled();
178
- });
175
+ // THEN
176
+ expect(titleService.setTitle).not.toHaveBeenCalled();
179
177
  });
178
+ });
180
179
 
181
180
  <%_ if (enableTranslation) { _%>
182
- describe('language change', () => {
183
- it('should set page title to default title if pageTitle is missing on routes', () => {
184
- // WHEN
185
- translateService.onLangChange.emit(langChangeEvent);
186
-
187
- // THEN
188
- expect(translateService.get).toHaveBeenCalledWith(defaultPageTitle);
189
- expect(titleService.setTitle).toHaveBeenCalledWith(defaultPageTitle + ' translated');
190
- });
191
-
192
- it('should set page title to root route pageTitle if there is no child routes', () => {
193
- // GIVEN
194
- routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
195
-
196
- // WHEN
197
- translateService.onLangChange.emit(langChangeEvent);
198
-
199
- // THEN
200
- expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
201
- expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle + ' translated');
202
- });
203
-
204
- it('should set page title to child route pageTitle if child routes exist and pageTitle is set for child route', () => {
205
- // GIVEN
206
- routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
207
- routerState.snapshot.root.firstChild = { data: { pageTitle: childRoutePageTitle } };
208
-
209
- // WHEN
210
- translateService.onLangChange.emit(langChangeEvent);
211
-
212
- // THEN
213
- expect(translateService.get).toHaveBeenCalledWith(childRoutePageTitle);
214
- expect(titleService.setTitle).toHaveBeenCalledWith(childRoutePageTitle + ' translated');
215
- });
216
-
217
- it('should set page title to parent route pageTitle if child routes exists but pageTitle is not set for child route data', () => {
218
- // GIVEN
219
- routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
220
- routerState.snapshot.root.firstChild = { data: {} };
221
-
222
- // WHEN
223
- translateService.onLangChange.emit(langChangeEvent);
224
-
225
- // THEN
226
- expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
227
- expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle + ' translated');
228
- });
181
+ describe('language change', () => {
182
+ it('should set page title to default title if pageTitle is missing on routes', () => {
183
+ // WHEN
184
+ translateService.onLangChange.emit(langChangeEvent);
185
+
186
+ // THEN
187
+ expect(translateService.get).toHaveBeenCalledWith(defaultPageTitle);
188
+ expect(titleService.setTitle).toHaveBeenCalledWith(defaultPageTitle + ' translated');
189
+ });
190
+
191
+ it('should set page title to root route pageTitle if there is no child routes', () => {
192
+ // GIVEN
193
+ routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
194
+
195
+ // WHEN
196
+ translateService.onLangChange.emit(langChangeEvent);
197
+
198
+ // THEN
199
+ expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
200
+ expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle + ' translated');
201
+ });
202
+
203
+ it('should set page title to child route pageTitle if child routes exist and pageTitle is set for child route', () => {
204
+ // GIVEN
205
+ routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
206
+ routerState.snapshot.root.firstChild = { data: { pageTitle: childRoutePageTitle } };
207
+
208
+ // WHEN
209
+ translateService.onLangChange.emit(langChangeEvent);
210
+
211
+ // THEN
212
+ expect(translateService.get).toHaveBeenCalledWith(childRoutePageTitle);
213
+ expect(titleService.setTitle).toHaveBeenCalledWith(childRoutePageTitle + ' translated');
229
214
  });
230
- <%_ } _%>
231
- });
232
- <%_ if (enableTranslation) { _%>
233
215
 
234
- describe('page language attribute', () => {
235
- it('should change page language attribute on language change', () => {
216
+ it('should set page title to parent route pageTitle if child routes exists but pageTitle is not set for child route data', () => {
236
217
  // GIVEN
237
- comp.ngOnInit();
218
+ routerState.snapshot.root.data = { pageTitle: parentRoutePageTitle };
219
+ routerState.snapshot.root.firstChild = { data: {} };
238
220
 
239
221
  // WHEN
222
+ translateService.onLangChange.emit(langChangeEvent);
223
+
224
+ // THEN
225
+ expect(translateService.get).toHaveBeenCalledWith(parentRoutePageTitle);
226
+ expect(titleService.setTitle).toHaveBeenCalledWith(parentRoutePageTitle + ' translated');
227
+ });
228
+ });
229
+ <%_ } _%>
230
+ });
231
+ <%_ if (enableTranslation) { _%>
232
+
233
+ describe('page language attribute', () => {
234
+ it('should change page language attribute on language change', () => {
235
+ // GIVEN
236
+ comp.ngOnInit();
237
+
238
+ // WHEN
240
239
  <%_ if (enableI18nRTL) { _%>
241
- findLanguageFromKeyPipe.isRTL = jest.fn(() => false);
240
+ findLanguageFromKeyPipe.isRTL = jest.fn(() => false);
242
241
  <%_ } _%>
243
- translateService.onLangChange.emit({ lang: 'lang1', translations: null });
242
+ translateService.onLangChange.emit({ lang: 'lang1', translations: null });
244
243
 
245
- // THEN
246
- expect(document.querySelector('html')?.getAttribute('lang')).toEqual('lang1');
244
+ // THEN
245
+ expect(document.querySelector('html')?.getAttribute('lang')).toEqual('lang1');
247
246
  <%_ if (enableI18nRTL) { _%>
248
- expect(document.querySelector('html')?.getAttribute('dir')).toEqual('ltr');
247
+ expect(document.querySelector('html')?.getAttribute('dir')).toEqual('ltr');
249
248
  <%_ } _%>
250
249
 
251
- // WHEN
250
+ // WHEN
252
251
  <%_ if (enableI18nRTL) { _%>
253
- findLanguageFromKeyPipe.isRTL = jest.fn(() => true);
252
+ findLanguageFromKeyPipe.isRTL = jest.fn(() => true);
254
253
  <%_ } _%>
255
- translateService.onLangChange.emit({ lang: 'lang2', translations: null });
254
+ translateService.onLangChange.emit({ lang: 'lang2', translations: null });
256
255
 
257
- // THEN
258
- expect(document.querySelector('html')?.getAttribute('lang')).toEqual('lang2');
256
+ // THEN
257
+ expect(document.querySelector('html')?.getAttribute('lang')).toEqual('lang2');
259
258
  <%_ if (enableI18nRTL) { _%>
260
- expect(document.querySelector('html')?.getAttribute('dir')).toEqual('rtl');
259
+ expect(document.querySelector('html')?.getAttribute('dir')).toEqual('rtl');
261
260
  <%_ } _%>
262
- });
263
261
  });
264
- <%_ } _%>
265
262
  });
263
+ <%_ } _%>
266
264
  });