Skip to content

Commit

Permalink
Add Frontend Maven Plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
Franceq34 authored and Quentin France committed Mar 11, 2022
1 parent ca71ddf commit 19e01af
Show file tree
Hide file tree
Showing 9 changed files with 74 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/main/webapp/app/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
1 change: 1 addition & 0 deletions src/main/webapp/app/springboot/domain/ProjectService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Project } from '@/springboot/domain/Project';
export interface ProjectService {
init(project: Project): Promise<void>;
addMaven(project: Project): Promise<void>;
addFrontendMavenPlugin(project: Project): Promise<void>;
addJavaBase(project: Project): Promise<void>;
addSpringBoot(project: Project): Promise<void>;
addSpringBootMvcTomcat(project: Project): Promise<void>;
Expand Down
7 changes: 7 additions & 0 deletions src/main/webapp/app/springboot/primary/Generator.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,12 @@ export default defineComponent({
}
};

const addFrontendMavenPlugin = async (): Promise<void> => {
if (project.value.folder !== '') {
await projectService.addFrontendMavenPlugin(toProject(project.value));
}
};

return {
project,
isAngularWithStyle,
Expand All @@ -94,6 +100,7 @@ export default defineComponent({
addAngular,
addReact,
addVue,
addFrontendMavenPlugin,
};
},
});
5 changes: 5 additions & 0 deletions src/main/webapp/app/springboot/primary/Generator.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,9 @@ <h3>Client</h3>
<input type="checkbox" id="vue-with-style" name="vue-with-style" v-model="isVueWithStyle" />
<label for="vue-with-style">Generate with style</label>
</div>
<div>
<button id="frontend-maven-plugin" @click.prevent="addFrontendMavenPlugin" data-selector="generator.add-frontend-maven-plugin-button">
Frontend Maven Plugin
</button>
</div>
</form>
5 changes: 5 additions & 0 deletions src/main/webapp/app/springboot/secondary/ProjectRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ export default class ProjectRepository implements ProjectService {
await this.axiosHttp.post('api/build-tools/maven', restProject);
}

async addFrontendMavenPlugin(project: Project): Promise<void> {
const restProject: RestProject = toRestProject(project);
await this.axiosHttp.post('api/frontend-maven-plugin', restProject);
}

async addJavaBase(project: Project): Promise<void> {
const restProject: RestProject = toRestProject(project);
await this.axiosHttp.post('/api/servers/java/base', restProject);
Expand Down
1 change: 1 addition & 0 deletions src/test/component/cypress/integration/Generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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(),
Expand Down
37 changes: 37 additions & 0 deletions src/test/javascript/spec/springboot/primary/Generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,18 @@ describe('ProjectRepository', () => {
expect(uri).toBe('/api/servers/spring-boot/mvc/web/tomcat');
expect(payload).toEqual<RestProject>(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<RestProject>(expectedRestProject);
});
});

0 comments on commit 19e01af

Please sign in to comment.