Skip to content

Commit

Permalink
Merge pull request #1448 from pascalgrimaud/front-springboot-database
Browse files Browse the repository at this point in the history
Front: add database buttons
  • Loading branch information
pascalgrimaud authored Apr 23, 2022
2 parents 98a8b40 + 72178d8 commit e830114
Show file tree
Hide file tree
Showing 4 changed files with 300 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/main/webapp/app/springboot/primary/Generator.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,38 @@ export default defineComponent({
}
};

const addPostgreSQL = async (): Promise<void> => {
if (project.value.folder !== '') {
await springBootService
.addPostgres(toProject(project.value))
.catch(error => logger.error('Adding SpringBoot Database PostgreSQL to project failed', error));
}
};

const addMySQL = async (): Promise<void> => {
if (project.value.folder !== '') {
await springBootService
.addMySQL(toProject(project.value))
.catch(error => logger.error('Adding SpringBoot Database MySQL to project failed', error));
}
};

const addMariaDB = async (): Promise<void> => {
if (project.value.folder !== '') {
await springBootService
.addMariaDB(toProject(project.value))
.catch(error => logger.error('Adding SpringBoot Database MariaDB to project failed', error));
}
};

const addMongoDB = async (): Promise<void> => {
if (project.value.folder !== '') {
await springBootService
.addMongoDB(toProject(project.value))
.catch(error => logger.error('Adding SpringBoot Database MongoDB to project failed', error));
}
};

const addAngular = async (): Promise<void> => {
if (project.value.folder !== '') {
if (isAngularWithStyle.value) {
Expand Down Expand Up @@ -169,6 +201,10 @@ export default defineComponent({
addSpringBootWebfluxNetty,
addSpringBootSecurityJWT,
addSpringBootSecurityJWTBasicAuth,
addPostgreSQL,
addMySQL,
addMariaDB,
addMongoDB,
addAngular,
addReact,
addVue,
Expand Down
37 changes: 37 additions & 0 deletions src/main/webapp/app/springboot/primary/Generator.vue
Original file line number Diff line number Diff line change
Expand Up @@ -612,6 +612,43 @@
>
Security JWT Basic Auth
</button>
<br />
<br />
<button
id="springboot-database-postgresql"
class="btn btn-outline-primary"
:data-selector="selectorPrefix + '.add-spring-boot-database-postgresql-button'"
@click.prevent="addPostgreSQL"
>
PostgreSQL
</button>

<button
id="springboot-database-mysql"
class="btn btn-outline-primary"
:data-selector="selectorPrefix + '.add-spring-boot-database-mysql-button'"
@click.prevent="addMySQL"
>
MySQL
</button>

<button
id="springboot-database-mariadb"
class="btn btn-outline-primary"
:data-selector="selectorPrefix + '.add-spring-boot-database-mariadb-button'"
@click.prevent="addMariaDB"
>
MariaDB
</button>

<button
id="springboot-database-mongodb"
class="btn btn-outline-primary"
:data-selector="selectorPrefix + '.add-spring-boot-database-mongodb-button'"
@click.prevent="addMongoDB"
>
MongoDB
</button>
</div>
<div
v-if="client === 'angular'"
Expand Down
5 changes: 5 additions & 0 deletions src/test/javascript/cypress/integration/Generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ describe('Generator', () => {
cy.get(generatorSelector('add-spring-boot-webflux-netty-button')).contains('Spring Webflux Netty');
cy.get(generatorSelector('add-spring-boot-jwt-button')).contains('Security JWT');
cy.get(generatorSelector('add-spring-boot-jwt-basic-auth-button')).contains('Security JWT Basic Auth');

cy.get(generatorSelector('add-spring-boot-database-postgresql-button')).contains('PostgreSQL');
cy.get(generatorSelector('add-spring-boot-database-mysql-button')).contains('MySQL');
cy.get(generatorSelector('add-spring-boot-database-mariadb-button')).contains('MariaDB');
cy.get(generatorSelector('add-spring-boot-database-mongodb-button')).contains('MongoDB');
});

it('should display angular', () => {
Expand Down
222 changes: 222 additions & 0 deletions src/test/javascript/spec/springboot/primary/Generator.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,228 @@ describe('Generator', () => {
expect(message).toBe('Adding SpringBoot Security JWT Basic Auth to project failed');
});

describe('Databases', () => {
it('should not add SpringBoot Database PostgreSQL when project path is not filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addPostgres.resolves({});
await wrap({ springBootService });
await selectSection('springboot');

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

expect(springBootService.addPostgres.called).toBe(false);
});

it('should add SpringBoot Database PostgreSQL when project path is filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addPostgres.resolves({});
await wrap({ springBootService });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate({
folder: 'project/path',
baseName: 'beer',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: '8080',
});
await fillFullForm(projectToUpdate);
await selectSection('springboot');

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

const args = springBootService.addPostgres.getCall(0).args[0];
expect(args).toEqual({
baseName: 'beer',
folder: 'project/path',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: 8080,
});
});

it('should handle error on adding SpringBoot Database PostgreSQL failure', async () => {
const logger = stubLogger();
const springBootService = stubSpringBootService();
springBootService.addPostgres.rejects({});
await wrap({ springBootService, logger });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate();
await fillFullForm(projectToUpdate);
await selectSection('springboot');

const initButton = wrapper.find('#springboot-database-postgresql');
await initButton.trigger('click');

const [message] = logger.error.getCall(0).args;
expect(message).toBe('Adding SpringBoot Database PostgreSQL to project failed');
});

it('should not add SpringBoot Database MySQL when project path is not filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addMySQL.resolves({});
await wrap({ springBootService });
await selectSection('springboot');

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

expect(springBootService.addMySQL.called).toBe(false);
});

it('should add SpringBoot Database MySQL when project path is filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addMySQL.resolves({});
await wrap({ springBootService });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate({
folder: 'project/path',
baseName: 'beer',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: '8080',
});
await fillFullForm(projectToUpdate);
await selectSection('springboot');

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

const args = springBootService.addMySQL.getCall(0).args[0];
expect(args).toEqual({
baseName: 'beer',
folder: 'project/path',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: 8080,
});
});

it('should handle error on adding SpringBoot Database MySQL failure', async () => {
const logger = stubLogger();
const springBootService = stubSpringBootService();
springBootService.addMySQL.rejects({});
await wrap({ springBootService, logger });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate();
await fillFullForm(projectToUpdate);
await selectSection('springboot');

const initButton = wrapper.find('#springboot-database-mysql');
await initButton.trigger('click');

const [message] = logger.error.getCall(0).args;
expect(message).toBe('Adding SpringBoot Database MySQL to project failed');
});

it('should not add SpringBoot Database MariaDB when project path is not filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addMariaDB.resolves({});
await wrap({ springBootService });
await selectSection('springboot');

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

expect(springBootService.addMariaDB.called).toBe(false);
});

it('should add SpringBoot Database MariaDB when project path is filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addMariaDB.resolves({});
await wrap({ springBootService });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate({
folder: 'project/path',
baseName: 'beer',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: '8080',
});
await fillFullForm(projectToUpdate);
await selectSection('springboot');

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

const args = springBootService.addMariaDB.getCall(0).args[0];
expect(args).toEqual({
baseName: 'beer',
folder: 'project/path',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: 8080,
});
});

it('should handle error on adding SpringBoot Database MariaDB failure', async () => {
const logger = stubLogger();
const springBootService = stubSpringBootService();
springBootService.addMariaDB.rejects({});
await wrap({ springBootService, logger });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate();
await fillFullForm(projectToUpdate);
await selectSection('springboot');

const initButton = wrapper.find('#springboot-database-mariadb');
await initButton.trigger('click');

const [message] = logger.error.getCall(0).args;
expect(message).toBe('Adding SpringBoot Database MariaDB to project failed');
});

it('should not add SpringBoot Database MongoDB when project path is not filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addMongoDB.resolves({});
await wrap({ springBootService });
await selectSection('springboot');

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

expect(springBootService.addMongoDB.called).toBe(false);
});

it('should add SpringBoot Database MongoDB when project path is filled', async () => {
const springBootService = stubSpringBootService();
springBootService.addMongoDB.resolves({});
await wrap({ springBootService });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate({
folder: 'project/path',
baseName: 'beer',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: '8080',
});
await fillFullForm(projectToUpdate);
await selectSection('springboot');

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

const args = springBootService.addMongoDB.getCall(0).args[0];
expect(args).toEqual({
baseName: 'beer',
folder: 'project/path',
projectName: 'Beer Project',
packageName: 'tech.jhipster.beer',
serverPort: 8080,
});
});

it('should handle error on adding SpringBoot Database MongoDB failure', async () => {
const logger = stubLogger();
const springBootService = stubSpringBootService();
springBootService.addMongoDB.rejects({});
await wrap({ springBootService, logger });
const projectToUpdate: ProjectToUpdate = createProjectToUpdate();
await fillFullForm(projectToUpdate);
await selectSection('springboot');

const initButton = wrapper.find('#springboot-database-mongodb');
await initButton.trigger('click');

const [message] = logger.error.getCall(0).args;
expect(message).toBe('Adding SpringBoot Database MongoDB to project failed');
});
});

it('should not add Angular when project path is not filled', async () => {
const angularService = stubAngularService();
angularService.add.resolves({});
Expand Down

0 comments on commit e830114

Please sign in to comment.