From 93a6c95d0c6f6f17d5bbb08e11425033c0bd435a Mon Sep 17 00:00:00 2001 From: Pascal Grimaud Date: Thu, 10 Mar 2022 18:03:27 +0100 Subject: [PATCH] JHLite: add Spring Boot MVC Tomcat --- .../app/springboot/domain/ProjectService.ts | 1 + .../springboot/primary/Generator.component.ts | 7 ++++ .../app/springboot/primary/Generator.html | 3 ++ .../springboot/secondary/ProjectRepository.ts | 5 +++ .../cypress/integration/Generator.spec.ts | 1 + .../domain/ProjectService.fixture.ts | 2 + .../spec/springboot/primary/Generator.spec.ts | 37 +++++++++++++++++++ .../secondary/ProjectRepository.spec.ts | 14 +++++++ 8 files changed, 70 insertions(+) diff --git a/src/main/webapp/app/springboot/domain/ProjectService.ts b/src/main/webapp/app/springboot/domain/ProjectService.ts index c00554a11e2..37f093d80e3 100644 --- a/src/main/webapp/app/springboot/domain/ProjectService.ts +++ b/src/main/webapp/app/springboot/domain/ProjectService.ts @@ -5,4 +5,5 @@ export interface ProjectService { addMaven(project: Project): Promise; addJavaBase(project: Project): Promise; addSpringBoot(project: Project): Promise; + addSpringBootMvcTomcat(project: Project): Promise; } diff --git a/src/main/webapp/app/springboot/primary/Generator.component.ts b/src/main/webapp/app/springboot/primary/Generator.component.ts index 2ce07f1dab3..a054368f4b0 100644 --- a/src/main/webapp/app/springboot/primary/Generator.component.ts +++ b/src/main/webapp/app/springboot/primary/Generator.component.ts @@ -36,12 +36,19 @@ export default defineComponent({ } }; + const addSpringBootMvcTomcat = async (): Promise => { + if (project.value.folder !== '') { + await projectService.addSpringBootMvcTomcat(toProject(project.value)); + } + }; + return { project, initProject, addMaven, addJavaBase, addSpringBoot, + addSpringBootMvcTomcat, }; }, }); diff --git a/src/main/webapp/app/springboot/primary/Generator.html b/src/main/webapp/app/springboot/primary/Generator.html index df1148f8501..ee35af1fc08 100644 --- a/src/main/webapp/app/springboot/primary/Generator.html +++ b/src/main/webapp/app/springboot/primary/Generator.html @@ -27,4 +27,7 @@

Project configuration

+ diff --git a/src/main/webapp/app/springboot/secondary/ProjectRepository.ts b/src/main/webapp/app/springboot/secondary/ProjectRepository.ts index 47fbf5fb66c..1a51a067c1a 100644 --- a/src/main/webapp/app/springboot/secondary/ProjectRepository.ts +++ b/src/main/webapp/app/springboot/secondary/ProjectRepository.ts @@ -25,4 +25,9 @@ export default class ProjectRepository implements ProjectService { const restProject: RestProject = toRestProject(project); await this.axiosHttp.post('/api/servers/spring-boot', restProject); } + + async addSpringBootMvcTomcat(project: Project): Promise { + const restProject: RestProject = toRestProject(project); + await this.axiosHttp.post('/api/servers/spring-boot/mvc/web/tomcat', restProject); + } } diff --git a/src/test/component/cypress/integration/Generator.spec.ts b/src/test/component/cypress/integration/Generator.spec.ts index ba8ad22d377..8bbdd7c44c6 100644 --- a/src/test/component/cypress/integration/Generator.spec.ts +++ b/src/test/component/cypress/integration/Generator.spec.ts @@ -19,5 +19,6 @@ describe('Generator', () => { cy.get(generatorSelector('add-maven-button')).contains('Maven'); cy.get(generatorSelector('add-java-base-button')).contains('JavaBase'); cy.get(generatorSelector('add-spring-boot-button')).contains('SpringBoot'); + cy.get(generatorSelector('add-spring-boot-mvc-tomcat-button')).contains('Spring MVC Tomcat'); }); }); diff --git a/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts b/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts index f4f8e9bba13..6494bb7f9b5 100644 --- a/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts +++ b/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts @@ -6,6 +6,7 @@ export interface ProjectServiceFixture extends ProjectService { addMaven: SinonStub; addJavaBase: SinonStub; addSpringBoot: SinonStub; + addSpringBootMvcTomcat: SinonStub; } export const stubProjectService = (): ProjectServiceFixture => ({ @@ -13,4 +14,5 @@ export const stubProjectService = (): ProjectServiceFixture => ({ addMaven: sinon.stub(), addJavaBase: sinon.stub(), addSpringBoot: sinon.stub(), + addSpringBootMvcTomcat: sinon.stub(), }); diff --git a/src/test/javascript/spec/springboot/primary/Generator.spec.ts b/src/test/javascript/spec/springboot/primary/Generator.spec.ts index 3780e4df8fd..79986a766a5 100644 --- a/src/test/javascript/spec/springboot/primary/Generator.spec.ts +++ b/src/test/javascript/spec/springboot/primary/Generator.spec.ts @@ -192,4 +192,41 @@ describe('Generator', () => { serverPort: 8080, }); }); + + it('should not add SpringBoot MVC with Tomcat when project path is not filled', async () => { + const projectService = stubProjectService(); + projectService.addSpringBootMvcTomcat.resolves({}); + await wrap({ projectService }); + + const button = wrapper.find('#springbootmvctomcat'); + await button.trigger('click'); + + expect(projectService.addSpringBootMvcTomcat.called).toBe(false); + }); + + it('should add SpringBoot when project path is filled', async () => { + const projectService = stubProjectService(); + projectService.addSpringBootMvcTomcat.resolves({}); + await wrap({ projectService }); + const projectToUpdate: ProjectToUpdate = createProjectToUpdate({ + folder: 'project/path', + baseName: 'beer', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: '8080', + }); + await fillFullForm(projectToUpdate); + + const button = wrapper.find('#springbootmvctomcat'); + await button.trigger('click'); + + const args = projectService.addSpringBootMvcTomcat.getCall(0).args[0]; + expect(args).toEqual({ + baseName: 'beer', + folder: 'project/path', + projectName: 'Beer Project', + packageName: 'tech.jhipster.beer', + serverPort: 8080, + }); + }); }); diff --git a/src/test/javascript/spec/springboot/secondary/ProjectRepository.spec.ts b/src/test/javascript/spec/springboot/secondary/ProjectRepository.spec.ts index c25de4919e8..6d44935f1d5 100644 --- a/src/test/javascript/spec/springboot/secondary/ProjectRepository.spec.ts +++ b/src/test/javascript/spec/springboot/secondary/ProjectRepository.spec.ts @@ -60,4 +60,18 @@ describe('ProjectRepository', () => { expect(uri).toBe('/api/servers/spring-boot'); expect(payload).toEqual(expectedRestProject); }); + + it('should add SpringBoot MVC with Tomcat', () => { + const axiosHttpStub = stubAxiosHttp(); + axiosHttpStub.post.resolves(); + const projectRepository = new ProjectRepository(axiosHttpStub); + const project: Project = createProject({ folder: 'folder/path' }); + + projectRepository.addSpringBootMvcTomcat(project); + + const expectedRestProject: RestProject = toRestProject(project); + const [uri, payload] = axiosHttpStub.post.getCall(0).args; + expect(uri).toBe('/api/servers/spring-boot/mvc/web/tomcat'); + expect(payload).toEqual(expectedRestProject); + }); });