diff --git a/src/main/webapp/app/main.ts b/src/main/webapp/app/main.ts index da2221d4f3f..0ef8984d0e5 100644 --- a/src/main/webapp/app/main.ts +++ b/src/main/webapp/app/main.ts @@ -17,8 +17,8 @@ const vueRepository = new VueRepository(axiosHttp); const app = createApp(App); app.provide('projectService', projectRepository); app.provide('angularService', angularRepository); -app.provide('reactRepository', reactRepository); -app.provide('vueRepository', vueRepository); +app.provide('reactService', reactRepository); +app.provide('vueService', vueRepository); app.use(router); app.mount('#app'); diff --git a/src/main/webapp/app/springboot/domain/ProjectService.ts b/src/main/webapp/app/springboot/domain/ProjectService.ts index 37f093d80e3..4c55bde6829 100644 --- a/src/main/webapp/app/springboot/domain/ProjectService.ts +++ b/src/main/webapp/app/springboot/domain/ProjectService.ts @@ -3,6 +3,7 @@ import { Project } from '@/springboot/domain/Project'; export interface ProjectService { init(project: Project): Promise; addMaven(project: Project): Promise; + addFrontendMavenPlugin(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 b3b6b0112c4..60706b8d430 100644 --- a/src/main/webapp/app/springboot/primary/Generator.component.ts +++ b/src/main/webapp/app/springboot/primary/Generator.component.ts @@ -81,6 +81,12 @@ export default defineComponent({ } }; + const addFrontendMavenPlugin = async (): Promise => { + if (project.value.folder !== '') { + await projectService.addFrontendMavenPlugin(toProject(project.value)); + } + }; + return { project, isAngularWithStyle, @@ -94,6 +100,7 @@ export default defineComponent({ addAngular, addReact, addVue, + addFrontendMavenPlugin, }; }, }); diff --git a/src/main/webapp/app/springboot/primary/Generator.html b/src/main/webapp/app/springboot/primary/Generator.html index c17151db85e..05b8144fb6a 100644 --- a/src/main/webapp/app/springboot/primary/Generator.html +++ b/src/main/webapp/app/springboot/primary/Generator.html @@ -48,4 +48,9 @@

Client

+
+ +
diff --git a/src/main/webapp/app/springboot/secondary/ProjectRepository.ts b/src/main/webapp/app/springboot/secondary/ProjectRepository.ts index 1a51a067c1a..b557d11ac27 100644 --- a/src/main/webapp/app/springboot/secondary/ProjectRepository.ts +++ b/src/main/webapp/app/springboot/secondary/ProjectRepository.ts @@ -16,6 +16,11 @@ export default class ProjectRepository implements ProjectService { await this.axiosHttp.post('api/build-tools/maven', restProject); } + async addFrontendMavenPlugin(project: Project): Promise { + const restProject: RestProject = toRestProject(project); + await this.axiosHttp.post('api/frontend-maven-plugin', restProject); + } + async addJavaBase(project: Project): Promise { const restProject: RestProject = toRestProject(project); await this.axiosHttp.post('/api/servers/java/base', restProject); diff --git a/src/test/component/cypress/integration/Generator.spec.ts b/src/test/component/cypress/integration/Generator.spec.ts index 867911625cc..5e1cbd33742 100644 --- a/src/test/component/cypress/integration/Generator.spec.ts +++ b/src/test/component/cypress/integration/Generator.spec.ts @@ -23,5 +23,6 @@ describe('Generator', () => { cy.get(generatorSelector('add-angular-button')).contains('Angular'); cy.get(generatorSelector('add-react-button')).contains('React'); cy.get(generatorSelector('add-vue-button')).contains('Vue'); + cy.get(generatorSelector('add-frontend-maven-plugin-button')).contains('Frontend Maven Plugin'); }); }); diff --git a/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts b/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts index 6494bb7f9b5..d7efa054900 100644 --- a/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts +++ b/src/test/javascript/spec/springboot/domain/ProjectService.fixture.ts @@ -4,6 +4,7 @@ import sinon, { SinonStub } from 'sinon'; export interface ProjectServiceFixture extends ProjectService { init: SinonStub; addMaven: SinonStub; + addFrontendMavenPlugin: SinonStub; addJavaBase: SinonStub; addSpringBoot: SinonStub; addSpringBootMvcTomcat: SinonStub; @@ -12,6 +13,7 @@ export interface ProjectServiceFixture extends ProjectService { export const stubProjectService = (): ProjectServiceFixture => ({ init: sinon.stub(), addMaven: sinon.stub(), + addFrontendMavenPlugin: 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 d32fc68f76e..95fbd83a09e 100644 --- a/src/test/javascript/spec/springboot/primary/Generator.spec.ts +++ b/src/test/javascript/spec/springboot/primary/Generator.spec.ts @@ -439,4 +439,41 @@ describe('Generator', () => { serverPort: 8080, }); }); + + it('should not add Frontend Maven Plugin when project path is not filled', async () => { + const projectService = stubProjectService(); + projectService.addFrontendMavenPlugin.resolves({}); + await wrap({ projectService }); + + const button = wrapper.find('#frontend-maven-plugin'); + await button.trigger('click'); + + expect(projectService.addFrontendMavenPlugin.called).toBe(false); + }); + + it('should add Frontend Maven Plugin when project path is filled', async () => { + const projectService = stubProjectService(); + projectService.addFrontendMavenPlugin.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('#frontend-maven-plugin'); + await button.trigger('click'); + + const args = projectService.addFrontendMavenPlugin.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 6d44935f1d5..7c466813575 100644 --- a/src/test/javascript/spec/springboot/secondary/ProjectRepository.spec.ts +++ b/src/test/javascript/spec/springboot/secondary/ProjectRepository.spec.ts @@ -74,4 +74,18 @@ describe('ProjectRepository', () => { expect(uri).toBe('/api/servers/spring-boot/mvc/web/tomcat'); expect(payload).toEqual(expectedRestProject); }); + + it('should add Frontend Maven Plugin', () => { + const axiosHttpStub = stubAxiosHttp(); + axiosHttpStub.post.resolves(); + const projectRepository = new ProjectRepository(axiosHttpStub); + const project: Project = createProject({ folder: 'folder/path' }); + + projectRepository.addFrontendMavenPlugin(project); + + const expectedRestProject: RestProject = toRestProject(project); + const [uri, payload] = axiosHttpStub.post.getCall(0).args; + expect(uri).toBe('api/frontend-maven-plugin'); + expect(payload).toEqual(expectedRestProject); + }); });