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

Add front JavaBase and SpringBoot buttons #953

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
2 changes: 2 additions & 0 deletions src/main/webapp/app/generator/domain/ProjectService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@ import { Project } from '@/generator/domain/Project';
export interface ProjectService {
init(project: Project): Promise<void>;
addMaven(project: Project): Promise<void>;
addJavaBase(project: Project): Promise<void>;
addSpringBoot(project: Project): Promise<void>;
}
18 changes: 16 additions & 2 deletions src/main/webapp/app/generator/primary/Generator.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,36 @@ export default defineComponent({

const project = ref<Project>({ folder: '' });

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

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

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

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

return {
project,
initProject,
addMaven,
addJavaBase,
addSpringBoot,
};
},
});
2 changes: 2 additions & 0 deletions src/main/webapp/app/generator/primary/Generator.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
<input id="path" type="text" v-model="project.folder" />
<button id="init" @click="initProject">Init</button>
<button id="maven" @click="addMaven">Maven</button>
<button id="javabase" @click="addJavaBase">JavaBase</button>
<button id="springboot" @click="addSpringBoot">SpringBoot</button>
10 changes: 10 additions & 0 deletions src/main/webapp/app/generator/secondary/ProjectRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,14 @@ export default class ProjectRepository implements ProjectService {
const restProject: RestProject = toRestProject(project);
await this.axiosHttp.post('api/build-tools/maven', restProject);
}

async addJavaBase(project: Project): Promise<void> {
const restProject: RestProject = toRestProject(project);
await this.axiosHttp.post('/api/servers/java/base', restProject);
}

async addSpringBoot(project: Project): Promise<void> {
const restProject: RestProject = toRestProject(project);
await this.axiosHttp.post('/api/servers/spring-boot', restProject);
}
}
6 changes: 6 additions & 0 deletions src/test/javascript/spec/generator/domain/Project.fixture.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { Project } from '@/generator/domain/Project';

export const createProject = (project?: Partial<Project>): Project => ({
folder: 'folder/path',
...project,
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@ import sinon, { SinonStub } from 'sinon';
export interface ProjectServiceFixture extends ProjectService {
init: SinonStub;
addMaven: SinonStub;
addJavaBase: SinonStub;
addSpringBoot: SinonStub;
}

export const stubProjectService = (): ProjectServiceFixture => ({
init: sinon.stub(),
addMaven: sinon.stub(),
addJavaBase: sinon.stub(),
addSpringBoot: sinon.stub(),
});
63 changes: 57 additions & 6 deletions src/test/javascript/spec/generator/primary/Generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { GeneratorVue } from '@/generator/primary';
import { mount, VueWrapper } from '@vue/test-utils';
import { Project } from '@/generator/domain/Project';
import { stubProjectService } from '../domain/ProjectService.fixture';
import { createProject } from '../domain/Project.fixture';

let wrapper: VueWrapper;

Expand Down Expand Up @@ -46,7 +47,7 @@ describe('Generator', () => {
const projectService = stubProjectService();
projectService.init.resolves({});
await wrap({ projectService });
const project: Project = { folder: 'project/path' };
const project: Project = createProject({ folder: 'project/path' });

const projectPathInput = wrapper.find('#path');
await projectPathInput.setValue(project.folder);
Expand All @@ -61,8 +62,8 @@ describe('Generator', () => {
projectService.addMaven.resolves({});
await wrap({ projectService });

const mavenButton = wrapper.find('#maven');
await mavenButton.trigger('click');
const button = wrapper.find('#maven');
await button.trigger('click');

expect(projectService.addMaven.called).toBe(false);
});
Expand All @@ -71,13 +72,63 @@ describe('Generator', () => {
const projectService = stubProjectService();
projectService.addMaven.resolves({});
await wrap({ projectService });
const project: Project = { folder: 'project/path' };
const project: Project = createProject({ folder: 'project/path' });

const projectPathInput = wrapper.find('#path');
await projectPathInput.setValue(project.folder);
const mavenButton = wrapper.find('#maven');
await mavenButton.trigger('click');
const button = wrapper.find('#maven');
await button.trigger('click');

expect(projectService.addMaven.called).toBe(true);
});

it('should not add JavaBase when project path is not filled', async () => {
const projectService = stubProjectService();
projectService.addJavaBase.resolves({});
await wrap({ projectService });

const button = wrapper.find('#javabase');
await button.trigger('click');

expect(projectService.addJavaBase.called).toBe(false);
});

it('should add JavaBase when project path is filled', async () => {
const projectService = stubProjectService();
projectService.addJavaBase.resolves({});
await wrap({ projectService });
const project: Project = createProject({ folder: 'project/path' });

const projectPathInput = wrapper.find('#path');
await projectPathInput.setValue(project.folder);
const button = wrapper.find('#javabase');
await button.trigger('click');

expect(projectService.addJavaBase.called).toBe(true);
});

it('should not add SpringBoot when project path is not filled', async () => {
const projectService = stubProjectService();
projectService.addSpringBoot.resolves({});
await wrap({ projectService });

const button = wrapper.find('#springboot');
await button.trigger('click');

expect(projectService.addSpringBoot.called).toBe(false);
});

it('should add SpringBoot when project path is filled', async () => {
const projectService = stubProjectService();
projectService.addSpringBoot.resolves({});
await wrap({ projectService });
const project: Project = createProject({ folder: 'project/path' });

const projectPathInput = wrapper.find('#path');
await projectPathInput.setValue(project.folder);
const button = wrapper.find('#springboot');
await button.trigger('click');

expect(projectService.addSpringBoot.called).toBe(true);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ import { Project } from '@/generator/domain/Project';
import ProjectRepository from '@/generator/secondary/ProjectRepository';
import { stubAxiosHttp } from '../../http/AxiosHttpStub';
import { RestProject, toRestProject } from '@/generator/secondary/RestProject';
import { createProject } from '../domain/Project.fixture';

describe('ProjectRepository', () => {
it('should init project', () => {
const axiosHttpStub = stubAxiosHttp();
axiosHttpStub.post.resolves();
const projectRepository = new ProjectRepository(axiosHttpStub);
const project: Project = { folder: 'folder/path' };
const project: Project = createProject({ folder: 'folder/path' });

projectRepository.init(project);

Expand All @@ -22,7 +23,7 @@ describe('ProjectRepository', () => {
const axiosHttpStub = stubAxiosHttp();
axiosHttpStub.post.resolves();
const projectRepository = new ProjectRepository(axiosHttpStub);
const project: Project = { folder: 'folder/path' };
const project: Project = createProject({ folder: 'folder/path' });

projectRepository.addMaven(project);

Expand All @@ -31,4 +32,32 @@ describe('ProjectRepository', () => {
expect(uri).toBe('api/build-tools/maven');
expect(payload).toEqual<RestProject>(expectedRestProject);
});

it('should add JavaBase', () => {
const axiosHttpStub = stubAxiosHttp();
axiosHttpStub.post.resolves();
const projectRepository = new ProjectRepository(axiosHttpStub);
const project: Project = createProject({ folder: 'folder/path' });

projectRepository.addJavaBase(project);

const expectedRestProject: RestProject = toRestProject(project);
const [uri, payload] = axiosHttpStub.post.getCall(0).args;
expect(uri).toBe('/api/servers/java/base');
expect(payload).toEqual<RestProject>(expectedRestProject);
});

it('should add SpringBoot', () => {
const axiosHttpStub = stubAxiosHttp();
axiosHttpStub.post.resolves();
const projectRepository = new ProjectRepository(axiosHttpStub);
const project: Project = createProject({ folder: 'folder/path' });

projectRepository.addSpringBoot(project);

const expectedRestProject: RestProject = toRestProject(project);
const [uri, payload] = axiosHttpStub.post.getCall(0).args;
expect(uri).toBe('/api/servers/spring-boot');
expect(payload).toEqual<RestProject>(expectedRestProject);
});
});
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { RestProject, toRestProject } from '@/generator/secondary/RestProject';
import { Project } from '@/generator/domain/Project';
import { createProject } from '../domain/Project.fixture';

describe('RestProject', () => {
it('should convert to Project', () => {
const project: Project = {
const project: Project = createProject({
folder: 'folder',
};
});

expect(toRestProject(project)).toEqual<RestProject>({
folder: 'folder',
Expand Down