From 4adb384de871f646041b15183899409363309303 Mon Sep 17 00:00:00 2001 From: Quentin France Date: Tue, 26 Apr 2022 11:52:57 +0200 Subject: [PATCH] Refactor Generator component with SpringBootGenerator --- .../springboot/primary/Generator.component.ts | 114 +-- .../app/springboot/primary/Generator.vue | 119 +-- .../SpringBootGenerator.component.ts | 134 ++++ .../SpringbootGenerator.vue | 116 +++ .../primary/spring-boot-generator/index.ts | 4 + .../cypress/integration/Generator.spec.ts | 25 +- .../spec/springboot/primary/Generator.spec.ts | 685 +----------------- .../SpringBootGenerator.spec.ts | 556 ++++++++++++++ 8 files changed, 827 insertions(+), 926 deletions(-) create mode 100644 src/main/webapp/app/springboot/primary/spring-boot-generator/SpringBootGenerator.component.ts create mode 100644 src/main/webapp/app/springboot/primary/spring-boot-generator/SpringbootGenerator.vue create mode 100644 src/main/webapp/app/springboot/primary/spring-boot-generator/index.ts create mode 100644 src/test/javascript/spec/springboot/primary/spring-boot-generator/SpringBootGenerator.spec.ts diff --git a/src/main/webapp/app/springboot/primary/Generator.component.ts b/src/main/webapp/app/springboot/primary/Generator.component.ts index 3617bb6b109..0752b3443f2 100644 --- a/src/main/webapp/app/springboot/primary/Generator.component.ts +++ b/src/main/webapp/app/springboot/primary/Generator.component.ts @@ -1,16 +1,17 @@ import { ProjectService } from '@/springboot/domain/ProjectService'; import { defineComponent, inject, ref } from 'vue'; import { ProjectToUpdate, toProject } from '@/springboot/primary/ProjectToUpdate'; -import { SpringBootService } from '@/springboot/domain/SpringBootService'; import { Logger } from '@/common/domain/Logger'; import { AngularGeneratorVue } from '@/springboot/primary/angular-generator'; import { ReactGeneratorVue } from '@/springboot/primary/react-generator'; import { VueGeneratorVue } from '@/springboot/primary/vue-generator'; import { SvelteGeneratorVue } from '@/springboot/primary/svelte-generator'; +import { SpringBootGeneratorVue } from '@/springboot/primary/spring-boot-generator'; export default defineComponent({ name: 'GeneratorComponent', components: { + SpringBootGeneratorVue, AngularGeneratorVue, ReactGeneratorVue, SvelteGeneratorVue, @@ -19,7 +20,6 @@ export default defineComponent({ setup() { const logger = inject('logger') as Logger; const projectService = inject('projectService') as ProjectService; - const springBootService = inject('springBootService') as SpringBootService; const selectorPrefix = 'generator'; @@ -73,102 +73,6 @@ export default defineComponent({ } }; - const addSpringBoot = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addSpringBoot(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot to project failed', error)); - } - }; - - const addSpringBootMvcTomcat = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addSpringBootMvcTomcat(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot MVC with Tomcat to project failed', error)); - } - }; - - const addSpringBootWebfluxNetty = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addSpringBootWebfluxNetty(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Webflux with Netty to project failed', error)); - } - }; - - const addSpringBootActuator = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addSpringBootActuator(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Actuator to project failed', error)); - } - }; - - const addSpringBootAopLogging = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addSpringBootAopLogging(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot AOP Logging to project failed', error)); - } - }; - - const addSpringBootLogstash = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addSpringBootLogstash(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Logstash to project failed', error)); - } - }; - - const addSpringBootSecurityJWT = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addJWT(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Security JWT to project failed', error)); - } - }; - - const addSpringBootSecurityJWTBasicAuth = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addBasicAuthJWT(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Security JWT Basic Auth to project failed', error)); - } - }; - - const addPostgreSQL = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addPostgres(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Database PostgreSQL to project failed', error)); - } - }; - - const addMySQL = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addMySQL(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Database MySQL to project failed', error)); - } - }; - - const addMariaDB = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addMariaDB(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Database MariaDB to project failed', error)); - } - }; - - const addMongoDB = async (): Promise => { - if (project.value.folder !== '') { - await springBootService - .addMongoDB(toProject(project.value)) - .catch(error => logger.error('Adding SpringBoot Database MongoDB to project failed', error)); - } - }; - const addFrontendMavenPlugin = async (): Promise => { if (project.value.folder !== '') { await projectService @@ -204,20 +108,6 @@ export default defineComponent({ addSonarBackend, addSonarBackendFrontend, addJavaBase, - addSpringBoot, - addSpringBootMvcTomcat, - addSpringBootWebfluxNetty, - addSpringBootActuator, - - addSpringBootAopLogging, - addSpringBootLogstash, - - addSpringBootSecurityJWT, - addSpringBootSecurityJWTBasicAuth, - addPostgreSQL, - addMySQL, - addMariaDB, - addMongoDB, addFrontendMavenPlugin, download, selectorPrefix, diff --git a/src/main/webapp/app/springboot/primary/Generator.vue b/src/main/webapp/app/springboot/primary/Generator.vue index 0f0f8f4b10f..30f4510040b 100644 --- a/src/main/webapp/app/springboot/primary/Generator.vue +++ b/src/main/webapp/app/springboot/primary/Generator.vue @@ -558,124 +558,7 @@ Download -
- - - - - - - -
-
- - - -
-
- - - -
-
- - - - - - - -
+ diff --git a/src/main/webapp/app/springboot/primary/spring-boot-generator/SpringBootGenerator.component.ts b/src/main/webapp/app/springboot/primary/spring-boot-generator/SpringBootGenerator.component.ts new file mode 100644 index 00000000000..132ab63932b --- /dev/null +++ b/src/main/webapp/app/springboot/primary/spring-boot-generator/SpringBootGenerator.component.ts @@ -0,0 +1,134 @@ +import { defineComponent, inject } from 'vue'; +import { ProjectToUpdate, toProject } from '@/springboot/primary/ProjectToUpdate'; +import { Logger } from '@/common/domain/Logger'; +import { SpringBootService } from '@/springboot/domain/SpringBootService'; + +export default defineComponent({ + name: 'SpringBootGeneratorComponent', + + props: { + project: { + type: Object, + required: true, + }, + }, + + setup(props) { + const logger = inject('logger') as Logger; + const springBootService = inject('springBootService') as SpringBootService; + + const selectorPrefix = 'spring-boot-generator'; + + const addSpringBoot = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addSpringBoot(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot to project failed', error)); + } + }; + + const addSpringBootMvcTomcat = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addSpringBootMvcTomcat(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot MVC with Tomcat to project failed', error)); + } + }; + + const addSpringBootWebfluxNetty = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addSpringBootWebfluxNetty(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Webflux with Netty to project failed', error)); + } + }; + + const addSpringBootActuator = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addSpringBootActuator(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Actuator to project failed', error)); + } + }; + + const addSpringBootAopLogging = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addSpringBootAopLogging(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot AOP Logging to project failed', error)); + } + }; + + const addSpringBootLogstash = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addSpringBootLogstash(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Logstash to project failed', error)); + } + }; + + const addSpringBootSecurityJWT = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addJWT(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Security JWT to project failed', error)); + } + }; + + const addSpringBootSecurityJWTBasicAuth = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addBasicAuthJWT(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Security JWT Basic Auth to project failed', error)); + } + }; + + const addPostgreSQL = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addPostgres(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Database PostgreSQL to project failed', error)); + } + }; + + const addMySQL = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addMySQL(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Database MySQL to project failed', error)); + } + }; + + const addMariaDB = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addMariaDB(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Database MariaDB to project failed', error)); + } + }; + + const addMongoDB = async (): Promise => { + if (props.project.folder !== '') { + await springBootService + .addMongoDB(toProject(props.project as ProjectToUpdate)) + .catch(error => logger.error('Adding SpringBoot Database MongoDB to project failed', error)); + } + }; + + return { + selectorPrefix, + addSpringBoot, + addSpringBootMvcTomcat, + addSpringBootWebfluxNetty, + addSpringBootActuator, + addSpringBootAopLogging, + addSpringBootLogstash, + addSpringBootSecurityJWT, + addSpringBootSecurityJWTBasicAuth, + addPostgreSQL, + addMySQL, + addMariaDB, + addMongoDB, + }; + }, +}); diff --git a/src/main/webapp/app/springboot/primary/spring-boot-generator/SpringbootGenerator.vue b/src/main/webapp/app/springboot/primary/spring-boot-generator/SpringbootGenerator.vue new file mode 100644 index 00000000000..1dcaa2f14d2 --- /dev/null +++ b/src/main/webapp/app/springboot/primary/spring-boot-generator/SpringbootGenerator.vue @@ -0,0 +1,116 @@ + + + diff --git a/src/main/webapp/app/springboot/primary/spring-boot-generator/index.ts b/src/main/webapp/app/springboot/primary/spring-boot-generator/index.ts new file mode 100644 index 00000000000..eb3b45d487f --- /dev/null +++ b/src/main/webapp/app/springboot/primary/spring-boot-generator/index.ts @@ -0,0 +1,4 @@ +import SpringBootGeneratorComponent from './SpringBootGenerator.component'; +import SpringBootGeneratorVue from './SpringbootGenerator.vue'; + +export { SpringBootGeneratorComponent, SpringBootGeneratorVue }; diff --git a/src/test/javascript/cypress/integration/Generator.spec.ts b/src/test/javascript/cypress/integration/Generator.spec.ts index a04f9ef8279..27c8fe568ac 100644 --- a/src/test/javascript/cypress/integration/Generator.spec.ts +++ b/src/test/javascript/cypress/integration/Generator.spec.ts @@ -1,6 +1,7 @@ import { composeSelector, dataSelector } from '../support/selector'; const generatorSelector = (name: string) => dataSelector(composeSelector('generator', name)); +const springBootGeneratorSelector = (name: string) => dataSelector(composeSelector('spring-boot-generator', name)); const angularGeneratorSelector = (name: string) => dataSelector(composeSelector('angular-generator', name)); const reactGeneratorSelector = (name: string) => dataSelector(composeSelector('react-generator', name)); const vueGeneratorSelector = (name: string) => dataSelector(composeSelector('vue-generator', name)); @@ -30,21 +31,21 @@ describe('Generator', () => { it('should display spring boot', () => { cy.get(generatorSelector('option-springboot')).check(); - cy.get(generatorSelector('add-spring-boot-button')).contains('Spring Boot'); - cy.get(generatorSelector('add-spring-boot-mvc-tomcat-button')).contains('Spring MVC Tomcat'); - cy.get(generatorSelector('add-spring-boot-webflux-netty-button')).contains('Spring Webflux Netty'); - cy.get(generatorSelector('add-spring-boot-actuator-button')).contains('Spring Boot Actuator'); + cy.get(springBootGeneratorSelector('add-spring-boot-button')).contains('Spring Boot'); + cy.get(springBootGeneratorSelector('add-spring-boot-mvc-tomcat-button')).contains('Spring MVC Tomcat'); + cy.get(springBootGeneratorSelector('add-spring-boot-webflux-netty-button')).contains('Spring Webflux Netty'); + cy.get(springBootGeneratorSelector('add-spring-boot-actuator-button')).contains('Spring Boot Actuator'); - cy.get(generatorSelector('add-spring-boot-aop-button')).contains('AOP Logging'); - cy.get(generatorSelector('add-spring-boot-logstash-button')).contains('Logstash'); + cy.get(springBootGeneratorSelector('add-spring-boot-aop-button')).contains('AOP Logging'); + cy.get(springBootGeneratorSelector('add-spring-boot-logstash-button')).contains('Logstash'); - cy.get(generatorSelector('add-spring-boot-jwt-button')).contains('Security JWT'); - cy.get(generatorSelector('add-spring-boot-jwt-basic-auth-button')).contains('Security JWT Basic Auth'); + cy.get(springBootGeneratorSelector('add-spring-boot-jwt-button')).contains('Security JWT'); + cy.get(springBootGeneratorSelector('add-spring-boot-jwt-basic-auth-button')).contains('Security JWT Basic Auth'); - cy.get(generatorSelector('add-spring-boot-database-postgresql-button')).contains('PostgreSQL'); - cy.get(generatorSelector('add-spring-boot-database-mysql-button')).contains('MySQL'); - cy.get(generatorSelector('add-spring-boot-database-mariadb-button')).contains('MariaDB'); - cy.get(generatorSelector('add-spring-boot-database-mongodb-button')).contains('MongoDB'); + cy.get(springBootGeneratorSelector('add-spring-boot-database-postgresql-button')).contains('PostgreSQL'); + cy.get(springBootGeneratorSelector('add-spring-boot-database-mysql-button')).contains('MySQL'); + cy.get(springBootGeneratorSelector('add-spring-boot-database-mariadb-button')).contains('MariaDB'); + cy.get(springBootGeneratorSelector('add-spring-boot-database-mongodb-button')).contains('MongoDB'); }); it('should display angular', () => { diff --git a/src/test/javascript/spec/springboot/primary/Generator.spec.ts b/src/test/javascript/spec/springboot/primary/Generator.spec.ts index fa5b94cea46..5c5983d2a4f 100644 --- a/src/test/javascript/spec/springboot/primary/Generator.spec.ts +++ b/src/test/javascript/spec/springboot/primary/Generator.spec.ts @@ -4,9 +4,6 @@ import { shallowMount, VueWrapper } from '@vue/test-utils'; import { stubProjectService } from '../domain/ProjectService.fixture'; import { ProjectToUpdate } from '@/springboot/primary/ProjectToUpdate'; import { createProjectToUpdate } from './ProjectToUpdate.fixture'; -import { stubSpringBootService } from '../domain/SpringBootService.fixture'; -import { SpringBootService } from '@/springboot/domain/SpringBootService'; -import { stubVueService } from '../domain/client/VueService.fixture'; import { stubLogger } from '../../common/domain/Logger.fixture'; import { Logger } from '@/common/domain/Logger'; @@ -15,14 +12,12 @@ let wrapper: VueWrapper; interface WrapperOptions { logger: Logger; projectService: ProjectService; - springBootService: SpringBootService; } const wrap = (wrapperOptions?: Partial) => { - const { logger, projectService, springBootService }: WrapperOptions = { + const { logger, projectService }: WrapperOptions = { logger: stubLogger(), projectService: stubProjectService(), - springBootService: stubSpringBootService(), ...wrapperOptions, }; wrapper = shallowMount(GeneratorVue, { @@ -30,7 +25,6 @@ const wrap = (wrapperOptions?: Partial) => { provide: { logger, projectService, - springBootService, }, }, }); @@ -49,15 +43,6 @@ const fillFullForm = async (projectToUpdate: ProjectToUpdate): Promise => await serverPortInput.setValue(projectToUpdate.serverPort); }; -const selectSection = async (value: string): Promise => { - const radio = wrapper.find('#option-' + value); - await radio.setValue(value); - await radio.trigger('click'); - - const section = wrapper.find('#section-' + value); - await section.trigger('click'); -}; - describe('Generator', () => { it('should exist', () => { wrap(); @@ -377,674 +362,6 @@ describe('Generator', () => { expect(message).toBe('Adding Java Base to project failed'); }); - it('should not add SpringBoot when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBoot.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot'); - await button.trigger('click'); - - expect(springBootService.addSpringBoot.called).toBe(false); - }); - - it('should add SpringBoot when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBoot.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot'); - await button.trigger('click'); - - const args = springBootService.addSpringBoot.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding spring boot failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addSpringBoot.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot to project failed'); - }); - - it('should not add SpringBoot MVC with Tomcat when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootMvcTomcat.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springbootmvctomcat'); - await button.trigger('click'); - - expect(springBootService.addSpringBootMvcTomcat.called).toBe(false); - }); - - it('should add SpringBoot MVC with Tomcat when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootMvcTomcat.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springbootmvctomcat'); - await button.trigger('click'); - - const args = springBootService.addSpringBootMvcTomcat.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot MVC with Tomcat failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addSpringBootMvcTomcat.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springbootmvctomcat'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot MVC with Tomcat to project failed'); - }); - - it('should not add SpringBoot Webflux with Netty when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootWebfluxNetty.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springbootwebfluxnetty'); - await button.trigger('click'); - - expect(springBootService.addSpringBootWebfluxNetty.called).toBe(false); - }); - - it('should add SpringBoot Webflux with Netty when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootWebfluxNetty.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springbootwebfluxnetty'); - await button.trigger('click'); - - const args = springBootService.addSpringBootWebfluxNetty.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Webflux with Netty failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addSpringBootWebfluxNetty.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springbootwebfluxnetty'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Webflux with Netty to project failed'); - }); - - it('should not add SpringBoot Actuator when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootActuator.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-actuator'); - await button.trigger('click'); - - expect(springBootService.addSpringBootActuator.called).toBe(false); - }); - - it('should add SpringBoot Actuator when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootActuator.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-actuator'); - await button.trigger('click'); - - const args = springBootService.addSpringBootActuator.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Actuator failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addSpringBootActuator.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-actuator'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Actuator to project failed'); - }); - - describe('Log tools', () => { - describe('AOP Logging', () => { - it('should not add SpringBoot AOP Logging when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootAopLogging.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-aop'); - await button.trigger('click'); - - expect(springBootService.addSpringBootAopLogging.called).toBe(false); - }); - - it('should add SpringBoot AOP Logging when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootAopLogging.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-aop'); - await button.trigger('click'); - - const args = springBootService.addSpringBootAopLogging.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot AOP Logging failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addSpringBootAopLogging.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-aop'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot AOP Logging to project failed'); - }); - }); - - describe('Logstash', () => { - it('should not add SpringBoot Logstash when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootLogstash.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-logstash'); - await button.trigger('click'); - - expect(springBootService.addSpringBootLogstash.called).toBe(false); - }); - - it('should add SpringBoot Logstash when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addSpringBootLogstash.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-logstash'); - await button.trigger('click'); - - const args = springBootService.addSpringBootLogstash.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Logstash failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addSpringBootLogstash.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-logstash'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Logstash to project failed'); - }); - }); - }); - - it('should not add SpringBoot Security JWT when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addJWT.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-jwt'); - await button.trigger('click'); - - expect(springBootService.addJWT.called).toBe(false); - }); - - it('should add SpringBoot Security JWT when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addJWT.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-jwt'); - await button.trigger('click'); - - const args = springBootService.addJWT.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Security JWT failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addJWT.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-jwt'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Security JWT to project failed'); - }); - - it('should not add SpringBoot Security JWT Basic Auth when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addBasicAuthJWT.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-jwt-basic-auth'); - await button.trigger('click'); - - expect(springBootService.addBasicAuthJWT.called).toBe(false); - }); - - it('should add SpringBoot Security JWT Basic Auth when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addBasicAuthJWT.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-jwt-basic-auth'); - await button.trigger('click'); - - const args = springBootService.addBasicAuthJWT.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Security JWT Basic Auth failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addBasicAuthJWT.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-jwt-basic-auth'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Security JWT Basic Auth to project failed'); - }); - - describe('Databases', () => { - it('should not add SpringBoot Database PostgreSQL when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addPostgres.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-postgresql'); - await button.trigger('click'); - - expect(springBootService.addPostgres.called).toBe(false); - }); - - it('should add SpringBoot Database PostgreSQL when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addPostgres.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-postgresql'); - await button.trigger('click'); - - const args = springBootService.addPostgres.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Database PostgreSQL failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addPostgres.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-database-postgresql'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Database PostgreSQL to project failed'); - }); - - it('should not add SpringBoot Database MySQL when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addMySQL.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-mysql'); - await button.trigger('click'); - - expect(springBootService.addMySQL.called).toBe(false); - }); - - it('should add SpringBoot Database MySQL when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addMySQL.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-mysql'); - await button.trigger('click'); - - const args = springBootService.addMySQL.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Database MySQL failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addMySQL.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-database-mysql'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Database MySQL to project failed'); - }); - - it('should not add SpringBoot Database MariaDB when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addMariaDB.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-mariadb'); - await button.trigger('click'); - - expect(springBootService.addMariaDB.called).toBe(false); - }); - - it('should add SpringBoot Database MariaDB when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addMariaDB.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-mariadb'); - await button.trigger('click'); - - const args = springBootService.addMariaDB.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Database MariaDB failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addMariaDB.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-database-mariadb'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Database MariaDB to project failed'); - }); - - it('should not add SpringBoot Database MongoDB when project path is not filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addMongoDB.resolves({}); - await wrap({ springBootService }); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-mongodb'); - await button.trigger('click'); - - expect(springBootService.addMongoDB.called).toBe(false); - }); - - it('should add SpringBoot Database MongoDB when project path is filled', async () => { - const springBootService = stubSpringBootService(); - springBootService.addMongoDB.resolves({}); - await wrap({ springBootService }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ - folder: 'project/path', - baseName: 'beer', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: '8080', - }); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const button = wrapper.find('#springboot-database-mongodb'); - await button.trigger('click'); - - const args = springBootService.addMongoDB.getCall(0).args[0]; - expect(args).toEqual({ - baseName: 'beer', - folder: 'project/path', - projectName: 'Beer Project', - packageName: 'tech.jhipster.beer', - serverPort: 8080, - }); - }); - - it('should handle error on adding SpringBoot Database MongoDB failure', async () => { - const logger = stubLogger(); - const springBootService = stubSpringBootService(); - springBootService.addMongoDB.rejects({}); - await wrap({ springBootService, logger }); - const projectToUpdate: ProjectToUpdate = createProjectToUpdate(); - await fillFullForm(projectToUpdate); - await selectSection('springboot'); - - const initButton = wrapper.find('#springboot-database-mongodb'); - await initButton.trigger('click'); - - const [message] = logger.error.getCall(0).args; - expect(message).toBe('Adding SpringBoot Database MongoDB to project failed'); - }); - }); - it('should not add Frontend Maven Plugin when project path is not filled', async () => { const projectService = stubProjectService(); projectService.addFrontendMavenPlugin.resolves({}); diff --git a/src/test/javascript/spec/springboot/primary/spring-boot-generator/SpringBootGenerator.spec.ts b/src/test/javascript/spec/springboot/primary/spring-boot-generator/SpringBootGenerator.spec.ts new file mode 100644 index 00000000000..746e532dfea --- /dev/null +++ b/src/test/javascript/spec/springboot/primary/spring-boot-generator/SpringBootGenerator.spec.ts @@ -0,0 +1,556 @@ +import { shallowMount, VueWrapper } from '@vue/test-utils'; +import { ProjectToUpdate } from '@/springboot/primary/ProjectToUpdate'; +import { createProjectToUpdate } from '../ProjectToUpdate.fixture'; +import { stubLogger } from '../../../common/domain/Logger.fixture'; +import { Logger } from '@/common/domain/Logger'; +import { SpringBootService } from '@/springboot/domain/SpringBootService'; +import { stubSpringBootService } from '../../domain/SpringBootService.fixture'; +import { SpringBootGeneratorVue } from '@/springboot/primary/spring-boot-generator'; + +let wrapper: VueWrapper; + +interface WrapperOptions { + springBootService: SpringBootService; + logger: Logger; + project: ProjectToUpdate; +} + +const wrap = (wrapperOptions?: Partial) => { + const { springBootService, logger, project }: WrapperOptions = { + springBootService: stubSpringBootService(), + logger: stubLogger(), + project: createProjectToUpdate(), + ...wrapperOptions, + }; + wrapper = shallowMount(SpringBootGeneratorVue, { + props: { + project, + }, + global: { + provide: { + springBootService, + logger, + }, + }, + }); +}; + +describe('SpringBootGenerator', () => { + it('should exist', () => { + wrap(); + + expect(wrapper.exists()).toBe(true); + }); + + it('should not add SpringBoot when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBoot.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot'); + await button.trigger('click'); + + expect(springBootService.addSpringBoot.called).toBe(false); + }); + + it('should add SpringBoot when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBoot.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot'); + await button.trigger('click'); + + const args = springBootService.addSpringBoot.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding spring boot failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addSpringBoot.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot to project failed'); + }); + + it('should not add SpringBoot MVC with Tomcat when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootMvcTomcat.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springbootmvctomcat'); + await button.trigger('click'); + + expect(springBootService.addSpringBootMvcTomcat.called).toBe(false); + }); + + it('should add SpringBoot MVC with Tomcat when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootMvcTomcat.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springbootmvctomcat'); + await button.trigger('click'); + + const args = springBootService.addSpringBootMvcTomcat.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot MVC with Tomcat failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addSpringBootMvcTomcat.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springbootmvctomcat'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot MVC with Tomcat to project failed'); + }); + + it('should not add SpringBoot Webflux with Netty when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootWebfluxNetty.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springbootwebfluxnetty'); + await button.trigger('click'); + + expect(springBootService.addSpringBootWebfluxNetty.called).toBe(false); + }); + + it('should add SpringBoot Webflux with Netty when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootWebfluxNetty.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springbootwebfluxnetty'); + await button.trigger('click'); + + const args = springBootService.addSpringBootWebfluxNetty.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Webflux with Netty failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addSpringBootWebfluxNetty.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springbootwebfluxnetty'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Webflux with Netty to project failed'); + }); + + it('should not add SpringBoot Actuator when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootActuator.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-actuator'); + await button.trigger('click'); + + expect(springBootService.addSpringBootActuator.called).toBe(false); + }); + + it('should add SpringBoot Actuator when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootActuator.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-actuator'); + await button.trigger('click'); + + const args = springBootService.addSpringBootActuator.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Actuator failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addSpringBootActuator.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-actuator'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Actuator to project failed'); + }); + + describe('Log tools', () => { + describe('AOP Logging', () => { + it('should not add SpringBoot AOP Logging when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootAopLogging.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-aop'); + await button.trigger('click'); + + expect(springBootService.addSpringBootAopLogging.called).toBe(false); + }); + + it('should add SpringBoot AOP Logging when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootAopLogging.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-aop'); + await button.trigger('click'); + + const args = springBootService.addSpringBootAopLogging.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot AOP Logging failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addSpringBootAopLogging.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-aop'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot AOP Logging to project failed'); + }); + }); + + describe('Logstash', () => { + it('should not add SpringBoot Logstash when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootLogstash.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-logstash'); + await button.trigger('click'); + + expect(springBootService.addSpringBootLogstash.called).toBe(false); + }); + + it('should add SpringBoot Logstash when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addSpringBootLogstash.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-logstash'); + await button.trigger('click'); + + const args = springBootService.addSpringBootLogstash.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Logstash failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addSpringBootLogstash.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-logstash'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Logstash to project failed'); + }); + }); + }); + + it('should not add SpringBoot Security JWT when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addJWT.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-jwt'); + await button.trigger('click'); + + expect(springBootService.addJWT.called).toBe(false); + }); + + it('should add SpringBoot Security JWT when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addJWT.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-jwt'); + await button.trigger('click'); + + const args = springBootService.addJWT.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Security JWT failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addJWT.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-jwt'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Security JWT to project failed'); + }); + + it('should not add SpringBoot Security JWT Basic Auth when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addBasicAuthJWT.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-jwt-basic-auth'); + await button.trigger('click'); + + expect(springBootService.addBasicAuthJWT.called).toBe(false); + }); + + it('should add SpringBoot Security JWT Basic Auth when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addBasicAuthJWT.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-jwt-basic-auth'); + await button.trigger('click'); + + const args = springBootService.addBasicAuthJWT.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Security JWT Basic Auth failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addBasicAuthJWT.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-jwt-basic-auth'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Security JWT Basic Auth to project failed'); + }); + + describe('Databases', () => { + it('should not add SpringBoot Database PostgreSQL when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addPostgres.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-database-postgresql'); + await button.trigger('click'); + + expect(springBootService.addPostgres.called).toBe(false); + }); + + it('should add SpringBoot Database PostgreSQL when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addPostgres.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-database-postgresql'); + await button.trigger('click'); + + const args = springBootService.addPostgres.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Database PostgreSQL failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addPostgres.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-database-postgresql'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Database PostgreSQL to project failed'); + }); + + it('should not add SpringBoot Database MySQL when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addMySQL.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-database-mysql'); + await button.trigger('click'); + + expect(springBootService.addMySQL.called).toBe(false); + }); + + it('should add SpringBoot Database MySQL when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addMySQL.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-database-mysql'); + await button.trigger('click'); + + const args = springBootService.addMySQL.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Database MySQL failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addMySQL.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-database-mysql'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Database MySQL to project failed'); + }); + + it('should not add SpringBoot Database MariaDB when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addMariaDB.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-database-mariadb'); + await button.trigger('click'); + + expect(springBootService.addMariaDB.called).toBe(false); + }); + + it('should add SpringBoot Database MariaDB when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addMariaDB.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-database-mariadb'); + await button.trigger('click'); + + const args = springBootService.addMariaDB.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Database MariaDB failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addMariaDB.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-database-mariadb'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Database MariaDB to project failed'); + }); + + it('should not add SpringBoot Database MongoDB when project path is not filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addMongoDB.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: '' }) }); + + const button = wrapper.find('#springboot-database-mongodb'); + await button.trigger('click'); + + expect(springBootService.addMongoDB.called).toBe(false); + }); + + it('should add SpringBoot Database MongoDB when project path is filled', async () => { + const springBootService = stubSpringBootService(); + springBootService.addMongoDB.resolves({}); + await wrap({ springBootService, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const button = wrapper.find('#springboot-database-mongodb'); + await button.trigger('click'); + + const args = springBootService.addMongoDB.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); + + it('should handle error on adding SpringBoot Database MongoDB failure', async () => { + const logger = stubLogger(); + const springBootService = stubSpringBootService(); + springBootService.addMongoDB.rejects({}); + await wrap({ springBootService, logger, project: createProjectToUpdate({ folder: 'project/path' }) }); + + const initButton = wrapper.find('#springboot-database-mongodb'); + await initButton.trigger('click'); + + const [message] = logger.error.getCall(0).args; + expect(message).toBe('Adding SpringBoot Database MongoDB to project failed'); + }); + }); +});