generator-jhipster 7.3.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/cli/import-jdl.js +3 -2
  2. package/cli/jhipster-command.js +2 -2
  3. package/cli/program.js +32 -29
  4. package/generators/app/index.js +46 -27
  5. package/generators/aws/index.js +8 -8
  6. package/generators/aws/lib/eb.js +1 -1
  7. package/generators/azure-app-service/index.js +16 -9
  8. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +2 -2
  9. package/generators/azure-spring-cloud/index.js +16 -9
  10. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +2 -2
  11. package/generators/bootstrap/index.js +57 -62
  12. package/generators/ci-cd/index.js +11 -8
  13. package/generators/ci-cd/templates/github-actions.yml.ejs +1 -1
  14. package/generators/ci-cd/templates/travis.yml.ejs +9 -4
  15. package/generators/cleanup.js +27 -171
  16. package/generators/client/files-angular.js +12 -1
  17. package/generators/client/files-common.js +6 -2
  18. package/generators/client/files-react.js +13 -2
  19. package/generators/client/files-vue.js +59 -7
  20. package/generators/client/index.js +46 -32
  21. package/generators/client/needle-api/needle-client-angular.js +1 -1
  22. package/generators/client/needle-api/needle-client-vue.js +57 -7
  23. package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
  24. package/generators/client/templates/angular/angular.json.ejs +5 -0
  25. package/generators/client/templates/angular/jest.conf.js.ejs +2 -0
  26. package/generators/client/templates/angular/package.json +29 -29
  27. package/generators/client/templates/angular/package.json.ejs +3 -1
  28. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +52 -54
  29. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.ts.ejs +4 -4
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +65 -0
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.spec.ts.ejs +35 -37
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  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.component.ts.ejs +4 -4
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.service.spec.ts.ejs +41 -0
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +73 -75
  37. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +4 -4
  38. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +62 -0
  39. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +44 -46
  40. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +61 -0
  41. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.spec.ts.ejs +122 -123
  42. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.ts.ejs +1 -1
  43. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.service.spec.ts.ejs +66 -0
  44. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +75 -77
  45. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +80 -80
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +48 -50
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +45 -47
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +4 -4
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +66 -0
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +99 -101
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +61 -63
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +28 -30
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +35 -37
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +40 -42
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +89 -91
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +4 -4
  58. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +81 -83
  59. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +8 -8
  60. package/generators/client/templates/angular/src/main/webapp/app/app-routing.module.ts.ejs +14 -3
  61. package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +8 -29
  62. package/generators/client/templates/angular/src/main/webapp/app/config/datepicker-adapter.ts.ejs +1 -1
  63. package/generators/client/templates/angular/src/main/webapp/app/config/dayjs.ts.ejs +4 -4
  64. package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +14 -9
  65. package/generators/client/templates/angular/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +6 -6
  66. package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
  67. package/generators/client/templates/angular/src/main/webapp/app/entities/entity-navbar-items.ts.ejs +29 -0
  68. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.spec.ts.ejs +106 -98
  69. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +166 -168
  70. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.ts.ejs +1 -1
  71. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +20 -0
  72. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +74 -70
  73. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +41 -2
  74. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +27 -29
  75. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.spec.ts.ejs +114 -115
  76. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.ts.ejs +4 -4
  77. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +132 -134
  78. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +29 -31
  79. package/generators/client/templates/angular/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +4 -4
  80. package/generators/client/templates/angular/src/main/webapp/app/shared/date/duration.pipe.ts.ejs +1 -1
  81. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-date.pipe.spec.ts.ejs +1 -1
  82. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-date.pipe.ts.ejs +1 -1
  83. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-datetime.pipe.spec.ts.ejs +1 -1
  84. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-datetime.pipe.ts.ejs +1 -1
  85. package/generators/client/templates/angular/src/main/webapp/app/shared/language/translate.directive.ts.ejs +6 -6
  86. package/generators/client/templates/angular/src/main/webapp/app/shared/language/translation.module.ts.ejs +83 -0
  87. package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +16 -2
  88. package/generators/client/templates/angular/tsconfig.json.ejs +2 -0
  89. package/generators/client/templates/angular/tsconfig.spec.json.ejs +0 -1
  90. package/generators/client/templates/angular/webpack/proxy.conf.js.ejs +0 -2
  91. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +0 -16
  92. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +12 -5
  93. package/generators/client/templates/common/package.json +6 -6
  94. package/generators/client/templates/common/src/main/webapp/robots.txt.ejs +0 -1
  95. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +86 -56
  96. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
  97. package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
  98. package/generators/client/templates/react/package.json +54 -53
  99. package/generators/client/templates/react/package.json.ejs +6 -1
  100. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
  101. package/generators/client/templates/react/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +3 -2
  102. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +2 -2
  103. package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +2 -2
  104. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
  105. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
  106. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
  107. package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  108. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.scss.ejs +9 -0
  109. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +2 -2
  110. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
  111. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
  112. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
  113. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.spec.ts.ejs +1 -1
  114. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +17 -3
  115. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +13 -1
  116. package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
  117. package/generators/client/templates/vue/package.json +40 -49
  118. package/generators/client/templates/vue/package.json.ejs +13 -17
  119. package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +23 -12
  120. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
  121. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
  122. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
  123. package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +16 -6
  124. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +27 -8
  125. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
  126. package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
  127. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
  128. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
  129. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +20 -0
  130. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
  131. package/generators/client/templates/vue/src/main/webapp/app/entities/user/{user.oauth2.service.ts.ejs → user.service.ts.ejs} +1 -1
  132. package/generators/client/templates/vue/{webpack/utils.js.ejs → src/main/webapp/app/index.ts.ejs} +1 -12
  133. package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -9
  134. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +20 -18
  135. package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +45 -3
  136. package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +19 -3
  137. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +0 -2
  138. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +3 -1
  139. package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +17 -3
  140. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +25 -10
  141. package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +2 -2
  142. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +6 -4
  143. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +4 -2
  144. package/generators/client/templates/vue/src/test/javascript/spec/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +10 -4
  145. package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
  146. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
  147. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
  148. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
  149. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +0 -1
  150. package/generators/client/templates/vue/tsconfig.json.ejs +6 -10
  151. package/generators/client/templates/vue/tsconfig.spec.json.ejs +37 -0
  152. package/generators/client/templates/vue/webpack/config.js.ejs +50 -0
  153. package/generators/client/templates/vue/webpack/vue.utils.js.ejs +33 -32
  154. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +150 -126
  155. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -76
  156. package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
  157. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +5 -41
  158. package/generators/cloudfoundry/index.js +9 -9
  159. package/generators/common/index.js +12 -10
  160. package/generators/common/templates/.prettierrc.ejs +1 -1
  161. package/generators/common/templates/README.md.jhi.ejs +19 -0
  162. package/generators/common/templates/package.json +4 -4
  163. package/generators/cypress/index.js +12 -9
  164. package/generators/cypress/templates/cypress.json.ejs +16 -2
  165. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/login-page.spec.ts.ejs +3 -14
  166. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/password-page.spec.ts.ejs +33 -39
  167. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/register-page.spec.ts.ejs +52 -62
  168. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/reset-password-page.spec.ts.ejs +2 -10
  169. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +25 -34
  170. package/generators/cypress/templates/src/test/javascript/cypress/integration/administration/administration.spec.ts.ejs +1 -22
  171. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +4 -4
  172. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +67 -7
  173. package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +4 -4
  174. package/generators/cypress/templates/src/test/javascript/cypress/support/index.ts.ejs +1 -6
  175. package/generators/cypress/templates/src/test/javascript/cypress/support/management.ts.ejs +1 -1
  176. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +8 -8
  177. package/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +0 -9
  178. package/generators/database-changelog/index.js +33 -22
  179. package/generators/database-changelog-liquibase/index.js +12 -8
  180. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +1 -1
  181. package/generators/docker-compose/index.js +11 -12
  182. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +1 -1
  183. package/generators/entities/index.js +35 -26
  184. package/generators/entities-client/index.js +10 -7
  185. package/generators/entity/index.js +81 -32
  186. package/generators/entity-client/files.js +7 -16
  187. package/generators/entity-client/index.js +22 -12
  188. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.spec.ts.ejs +42 -44
  189. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +1 -1
  190. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.spec.ts.ejs +58 -60
  191. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +1 -35
  192. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  193. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +4 -4
  194. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +110 -112
  195. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +9 -2
  196. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +8 -8
  197. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/no-pagination-template.ejs +8 -8
  198. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +8 -8
  199. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +15 -6
  200. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +1 -1
  201. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +1 -1
  202. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +1 -1
  203. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +203 -198
  204. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +5 -5
  205. package/generators/entity-client/templates/angular/src/test/javascript/e2e/entities/entity.spec.ts.ejs +1 -1
  206. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +264 -127
  207. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +17 -14
  208. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.reducer.ts.ejs +5 -4
  209. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +11 -13
  210. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +32 -25
  211. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.vue.ejs +6 -9
  212. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +2 -1
  213. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  214. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
  215. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +10 -7
  216. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +5 -1
  217. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
  218. package/generators/entity-i18n/index.js +7 -4
  219. package/generators/entity-server/files.js +14 -0
  220. package/generators/entity-server/index.js +12 -8
  221. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +2 -2
  222. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +1 -1
  223. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +9 -8
  224. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +16 -29
  225. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +3 -3
  226. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +46 -0
  227. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +1 -1
  228. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +18 -2
  229. package/generators/entity-server/templates/src/main/java/package/repository/search/SortToFieldSortBuilderConverter.java.ejs +24 -0
  230. package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +8 -6
  231. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +5 -1
  232. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +41 -43
  233. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +3 -3
  234. package/generators/gae/index.js +10 -10
  235. package/generators/generator-base-blueprint.js +14 -46
  236. package/generators/generator-base-private.js +44 -23
  237. package/generators/generator-base.js +58 -18
  238. package/generators/generator-constants.js +30 -23
  239. package/generators/generator-transforms.js +39 -27
  240. package/generators/heroku/index.js +14 -33
  241. package/generators/init/constants.cjs +1 -1
  242. package/generators/java/constants.cjs +1 -1
  243. package/generators/kubernetes/files.js +3 -0
  244. package/generators/kubernetes/index.js +10 -10
  245. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -1
  246. package/generators/kubernetes/templates/deployment.yml.ejs +8 -3
  247. package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
  248. package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
  249. package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
  250. package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
  251. package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
  252. package/generators/kubernetes/templates/istio/gateway.yml.ejs +7 -5
  253. package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
  254. package/generators/kubernetes-base.js +1 -0
  255. package/generators/kubernetes-helm/files.js +3 -8
  256. package/generators/kubernetes-helm/index.js +10 -10
  257. package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +0 -1
  258. package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +5 -0
  259. package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +0 -11
  260. package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +5 -0
  261. package/generators/kubernetes-helm/templates/app/values.yml.ejs +68 -5
  262. package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +1 -1
  263. package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +1 -1
  264. package/generators/kubernetes-knative/index.js +10 -10
  265. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +6 -4
  266. package/generators/kubernetes-knative/templates/service.yml.ejs +1 -1
  267. package/generators/languages/index.js +13 -13
  268. package/generators/languages/templates/src/main/webapp/i18n/vi/login.json +1 -1
  269. package/generators/openapi-client/index.js +13 -10
  270. package/generators/openshift/index.js +10 -11
  271. package/generators/openshift/templates/deployment.yml.ejs +1 -1
  272. package/generators/page/index.js +12 -10
  273. package/generators/server/__snapshots__/generator.spec.mjs.snap +28 -15
  274. package/generators/server/cleanup.js +151 -0
  275. package/generators/server/files-sql.js +52 -0
  276. package/generators/server/files.js +31 -14
  277. package/generators/server/index.js +86 -33
  278. package/generators/server/templates/build.gradle.ejs +231 -189
  279. package/generators/server/templates/gradle.properties.ejs +12 -12
  280. package/generators/server/templates/npmw +8 -6
  281. package/generators/server/templates/npmw.cmd +13 -8
  282. package/generators/server/templates/pom.xml.ejs +425 -217
  283. package/generators/server/templates/sql/reactive/src/main/java/package/repository/UserSqlHelper.java.ejs +48 -0
  284. package/generators/server/templates/src/main/docker/app.yml.ejs +1 -1
  285. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +2 -2
  286. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +3 -2
  287. package/generators/server/templates/src/main/java/package/config/OpenApiConfiguration.java.ejs +17 -54
  288. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +5 -5
  289. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +4 -6
  290. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +0 -3
  291. package/generators/server/templates/src/main/java/package/config/neo4j/Neo4jMigrations.java.ejs +19 -9
  292. package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
  293. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +2 -2
  294. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +0 -25
  295. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +31 -4
  296. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +23 -11
  297. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +16 -8
  298. package/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +6 -6
  299. package/generators/server/templates/src/main/java/package/web/filter/ModifyServersOpenApiFilter.java.ejs +3 -2
  300. package/generators/server/templates/src/main/java/package/web/filter/SpaWebFilter.java.ejs +1 -1
  301. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +2 -2
  302. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +2 -2
  303. package/generators/server/templates/src/main/resources/config/application.yml.ejs +22 -8
  304. package/generators/server/templates/src/main/resources/logback-spring.xml.ejs +1 -2
  305. package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
  306. package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +2 -6
  307. package/generators/server/templates/src/test/java/package/cucumber/CucumberTestContextConfiguration.java.ejs +2 -3
  308. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/UserStepDefs.java.ejs +41 -6
  309. package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
  310. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +6 -1
  311. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
  312. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
  313. package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +17 -3
  314. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +63 -0
  315. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +1 -1
  316. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +2 -3
  317. package/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerTest.java.ejs +9 -0
  318. package/generators/server/templates/src/test/resources/junit-platform.properties.ejs +2 -0
  319. package/generators/server/templates/src/test/resources/logback.xml.ejs +1 -1
  320. package/generators/server/templates/src/test/{features → resources/package/features}/gitkeep +0 -0
  321. package/generators/server/templates/src/test/{features → resources/package/features}/user/user.feature.ejs +0 -0
  322. package/generators/spring-controller/index.js +9 -7
  323. package/generators/spring-controller/templates/src/test/java/package/web/rest/ResourceIT.java.ejs +1 -1
  324. package/generators/spring-service/index.js +10 -7
  325. package/generators/upgrade/index.js +4 -5
  326. package/generators/utils.js +2 -2
  327. package/generators/workspaces/index.js +16 -7
  328. package/jdl/jhipster/default-application-options.js +9 -7
  329. package/package.json +22 -22
  330. package/utils/entity.js +17 -4
  331. package/utils/field.js +11 -1
  332. package/utils/multi-step-transform/index.js +8 -8
  333. package/generators/client/templates/react/.npmrc.ejs +0 -1
  334. package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -17
  335. package/generators/client/templates/vue/webpack/env.js.ejs +0 -67
  336. package/generators/client/templates/vue/webpack/loader.conf.js.ejs +0 -20
  337. package/generators/client/templates/vue/webpack/prod.env.js.ejs +0 -15
  338. package/generators/server/templates/src/main/java/package/config/apidocs/GatewaySwaggerResourcesProvider.java.ejs +0 -91
  339. package/generators/server/templates/src/test/java/package/config/apidocs/GatewaySwaggerResourcesProviderTest.java.ejs +0 -79
  340. package/generators/server/templates/src/test/resources/cucumber.properties.ejs +0 -1
@@ -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
  });
@@ -21,7 +21,7 @@ import { Title } from '@angular/platform-browser';
21
21
  import { Router, ActivatedRouteSnapshot, NavigationEnd } from '@angular/router';
22
22
  <%_ if (enableTranslation) { _%>
23
23
  import { TranslateService, LangChangeEvent } from '@ngx-translate/core';
24
- import * as dayjs from 'dayjs';
24
+ import dayjs from 'dayjs/esm';
25
25
  <%_ } _%>
26
26
 
27
27
  import { AccountService } from 'app/core/auth/account.service';
@@ -60,6 +60,26 @@
60
60
  </span>
61
61
  </a>
62
62
  <ul class="dropdown-menu" ngbDropdownMenu aria-labelledby="entity-menu">
63
+ <%_ if (applicationTypeGateway) { _%>
64
+ <%_ for (const remote of microfrontends) { _%>
65
+ <li *ngFor="let entityNavbarItem of <%= remote.lowercaseBaseName %>EntityNavbarItems">
66
+ <a
67
+ class="dropdown-item"
68
+ [routerLink]="entityNavbarItem.route"
69
+ routerLinkActive="active"
70
+ [routerLinkActiveOptions]="{ exact: true }"
71
+ (click)="collapseNavbar()"
72
+ >
73
+ <fa-icon icon="asterisk" [fixedWidth]="true"></fa-icon>
74
+ <span
75
+ <%_ if (enableTranslation) { _%>
76
+ [jhiTranslate]="entityNavbarItem.translationKey"
77
+ <%_ } _%>
78
+ >{{entityNavbarItem.name}}</span>
79
+ </a>
80
+ </li>
81
+ <%_ } _%>
82
+ <%_ } _%>
63
83
  <!-- jhipster-needle-add-entity-to-menu - JHipster will add entities to the menu here -->
64
84
  </ul>
65
85
  </li>
@@ -16,12 +16,11 @@
16
16
  See the License for the specific language governing permissions and
17
17
  limitations under the License.
18
18
  -%>
19
- jest.mock('@angular/router');
20
19
  jest.mock('app/login/login.service');
21
20
 
22
21
  import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
23
22
  import { HttpClientTestingModule } from '@angular/common/http/testing';
24
- import { Router } from '@angular/router';
23
+ import { RouterTestingModule } from '@angular/router/testing';
25
24
  import { of } from 'rxjs';
26
25
  import { NgxWebstorageModule } from 'ngx-webstorage';
27
26
  <%_ if (enableTranslation) { _%>
@@ -36,88 +35,93 @@ import { LoginService } from 'app/login/login.service';
36
35
 
37
36
  import { NavbarComponent } from './navbar.component';
38
37
 
39
- describe('Component Tests', () => {
40
- describe('Navbar Component', () => {
41
- let comp: NavbarComponent;
42
- let fixture: ComponentFixture<NavbarComponent>;
43
- let accountService: AccountService;
44
- let profileService: ProfileService;
45
- const account: Account = {
46
- activated: true,
47
- authorities: [],
48
- email: '',
49
- firstName: 'John',
50
- langKey: '',
51
- lastName: 'Doe',
52
- login: 'john.doe',
53
- imageUrl: '',
54
- };
55
-
56
- beforeEach(
57
- waitForAsync(() => {
58
- TestBed.configureTestingModule({
59
- imports: [HttpClientTestingModule, NgxWebstorageModule.forRoot()<% if (enableTranslation) { %>, TranslateModule.forRoot()<% } %>],
60
- declarations: [NavbarComponent],
61
- providers: [Router, LoginService],
62
- })
63
- .overrideTemplate(NavbarComponent, '')
64
- .compileComponents();
38
+ describe('Navbar Component', () => {
39
+ let comp: NavbarComponent;
40
+ let fixture: ComponentFixture<NavbarComponent>;
41
+ let accountService: AccountService;
42
+ let profileService: ProfileService;
43
+ const account: Account = {
44
+ activated: true,
45
+ authorities: [],
46
+ email: '',
47
+ firstName: 'John',
48
+ langKey: '',
49
+ lastName: 'Doe',
50
+ login: 'john.doe',
51
+ imageUrl: '',
52
+ };
53
+
54
+ beforeEach(
55
+ waitForAsync(() => {
56
+ TestBed.configureTestingModule({
57
+ imports: [
58
+ HttpClientTestingModule,
59
+ RouterTestingModule.withRoutes([]),
60
+ <%_ if (enableTranslation) { _%>
61
+ TranslateModule.forRoot(),
62
+ <%_ } _%>
63
+ NgxWebstorageModule.forRoot()
64
+ ],
65
+ declarations: [NavbarComponent],
66
+ providers: [LoginService],
65
67
  })
66
- );
67
-
68
- beforeEach(() => {
69
- fixture = TestBed.createComponent(NavbarComponent);
70
- comp = fixture.componentInstance;
71
- accountService = TestBed.inject(AccountService);
72
- profileService = TestBed.inject(ProfileService);
73
- });
68
+ .overrideTemplate(NavbarComponent, '')
69
+ .compileComponents();
70
+ })
71
+ );
72
+
73
+ beforeEach(() => {
74
+ fixture = TestBed.createComponent(NavbarComponent);
75
+ comp = fixture.componentInstance;
76
+ accountService = TestBed.inject(AccountService);
77
+ profileService = TestBed.inject(ProfileService);
78
+ });
74
79
 
75
- it('Should call profileService.getProfileInfo on init', () => {
76
- // GIVEN
77
- jest.spyOn(profileService, 'getProfileInfo').mockReturnValue(of(new ProfileInfo()));
80
+ it('Should call profileService.getProfileInfo on init', () => {
81
+ // GIVEN
82
+ jest.spyOn(profileService, 'getProfileInfo').mockReturnValue(of(new ProfileInfo()));
78
83
 
79
- // WHEN
80
- comp.ngOnInit();
84
+ // WHEN
85
+ comp.ngOnInit();
81
86
 
82
- // THEN
83
- expect(profileService.getProfileInfo).toHaveBeenCalled();
84
- });
87
+ // THEN
88
+ expect(profileService.getProfileInfo).toHaveBeenCalled();
89
+ });
85
90
 
86
- it('Should hold current authenticated user in variable account', () => {
87
- // WHEN
88
- comp.ngOnInit();
91
+ it('Should hold current authenticated user in variable account', () => {
92
+ // WHEN
93
+ comp.ngOnInit();
89
94
 
90
- // THEN
91
- expect(comp.account).toBeNull();
95
+ // THEN
96
+ expect(comp.account).toBeNull();
92
97
 
93
- // WHEN
94
- accountService.authenticate(account);
98
+ // WHEN
99
+ accountService.authenticate(account);
95
100
 
96
- // THEN
97
- expect(comp.account).toEqual(account);
101
+ // THEN
102
+ expect(comp.account).toEqual(account);
98
103
 
99
- // WHEN
100
- accountService.authenticate(null);
104
+ // WHEN
105
+ accountService.authenticate(null);
101
106
 
102
- // THEN
103
- expect(comp.account).toBeNull();
104
- });
107
+ // THEN
108
+ expect(comp.account).toBeNull();
109
+ });
105
110
 
106
- it('Should hold current authenticated user in variable account if user is authenticated before page load', () => {
107
- // GIVEN
108
- accountService.authenticate(account);
111
+ it('Should hold current authenticated user in variable account if user is authenticated before page load', () => {
112
+ // GIVEN
113
+ accountService.authenticate(account);
109
114
 
110
- // WHEN
111
- comp.ngOnInit();
115
+ // WHEN
116
+ comp.ngOnInit();
112
117
 
113
- // THEN
114
- expect(comp.account).toEqual(account);
118
+ // THEN
119
+ expect(comp.account).toEqual(account);
115
120
 
116
- // WHEN
117
- accountService.authenticate(null);
121
+ // WHEN
122
+ accountService.authenticate(null);
118
123
 
119
- // THEN
120
- expect(comp.account).toBeNull();
121
- });
124
+ // THEN
125
+ expect(comp.account).toBeNull();
122
126
  });
123
127
  });