Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Front: add Spring Boot MVC Tomcat #989

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -5,4 +5,5 @@ export interface ProjectService {
addMaven(project: Project): Promise<void>;
addJavaBase(project: Project): Promise<void>;
addSpringBoot(project: Project): Promise<void>;
addSpringBootMvcTomcat(project: Project): Promise<void>;
}
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 @@ -36,12 +36,19 @@ export default defineComponent({
}
};

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

return {
project,
initProject,
addMaven,
addJavaBase,
addSpringBoot,
addSpringBootMvcTomcat,
};
},
});
3 changes: 3 additions & 0 deletions src/main/webapp/app/springboot/primary/Generator.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,7 @@ <h3>Project configuration</h3>
<button id="maven" @click.prevent="addMaven" data-selector="generator.add-maven-button">Maven</button>
<button id="javabase" @click.prevent="addJavaBase" data-selector="generator.add-java-base-button">JavaBase</button>
<button id="springboot" @click.prevent="addSpringBoot" data-selector="generator.add-spring-boot-button">SpringBoot</button>
<button id="springbootmvctomcat" @click.prevent="addSpringBootMvcTomcat" data-selector="generator.add-spring-boot-mvc-tomcat-button">
Spring MVC Tomcat
</button>
</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 @@ -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<void> {
const restProject: RestProject = toRestProject(project);
await this.axiosHttp.post('/api/servers/spring-boot/mvc/web/tomcat', restProject);
}
}
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 @@ -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');
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ export interface ProjectServiceFixture extends ProjectService {
addMaven: SinonStub;
addJavaBase: SinonStub;
addSpringBoot: SinonStub;
addSpringBootMvcTomcat: SinonStub;
}

export const stubProjectService = (): ProjectServiceFixture => ({
init: sinon.stub(),
addMaven: sinon.stub(),
addJavaBase: sinon.stub(),
addSpringBoot: sinon.stub(),
addSpringBootMvcTomcat: sinon.stub(),
});
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 @@ -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,
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,18 @@ describe('ProjectRepository', () => {
expect(uri).toBe('/api/servers/spring-boot');
expect(payload).toEqual<RestProject>(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<RestProject>(expectedRestProject);
});
});