Skip to content

Commit

Permalink
e2e(757) - add tests for support for kamelet beans
Browse files Browse the repository at this point in the history
  • Loading branch information
tplevko authored and lordrip committed Feb 21, 2024
1 parent 45cfa4d commit 60f92a0
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 56 deletions.
117 changes: 64 additions & 53 deletions packages/ui-tests/cypress/e2e/designer/routeBeanConf.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,85 +3,96 @@ describe('Test for node bean reference and configuration support', () => {
cy.openHomePage();
});

it('Beans - create a new bean in route using bean editor', () => {
cy.uploadFixture('flows/SqlBeansCR.yaml');
cy.openDesignPage();
const testData = [
{ file: 'SqlBeansKamelet.yaml', dataSource: '#bean:{{test}}' },
{ file: 'SqlBeansCR.yaml', dataSource: '#test' },
];
testData.forEach((data) => {
it('Beans - create a new bean in route using bean editor ' + data.file, () => {
cy.uploadFixture('flows/' + data.file);
cy.openDesignPage();

cy.openStepConfigurationTab('sql');
cy.configureNewBeanReference('parameters.dataSource');
cy.get(`input[name="name"]`).clear().type('test');
cy.get(`input[name="type"]`).clear().type('org.acme');
cy.openStepConfigurationTab('sql');
cy.configureNewBeanReference('parameters.dataSource');
cy.get(`input[name="name"]`).clear().type('test');
cy.get(`input[name="type"]`).clear().type('org.acme');

cy.expandWrappedSection('properties');
cy.get('[data-testid="properties-add-string-property--btn"]').not(':hidden').first().click({ force: true });
cy.get('[data-testid="properties--placeholder-name-input"]').should('not.be.disabled');
cy.get('[data-testid="properties--placeholder-name-input"]').click({ force: true });
cy.get('[data-testid="properties--placeholder-name-input"]').clear().type('test');
cy.expandWrappedSection('properties');
cy.get('[data-testid="properties-add-string-property--btn"]').not(':hidden').first().click({ force: true });
cy.get('[data-testid="properties--placeholder-name-input"]').should('not.be.disabled');
cy.get('[data-testid="properties--placeholder-name-input"]').click({ force: true });
cy.get('[data-testid="properties--placeholder-name-input"]').clear().type('test');

cy.get('[data-testid="properties--placeholder-value-input"]').should('not.be.disabled');
cy.get('[data-testid="properties--placeholder-value-input"]').click({ force: true });
cy.get('[data-testid="properties--placeholder-value-input"]').clear().type('value');
cy.get('[data-testid="properties--placeholder-value-input"]').should('not.be.disabled');
cy.get('[data-testid="properties--placeholder-value-input"]').click({ force: true });
cy.get('[data-testid="properties--placeholder-value-input"]').clear().type('value');

cy.get('[data-testid="properties--placeholder-property-edit-confirm--btn"]').click({ force: true });
cy.get('[data-testid="properties--placeholder-property-edit-confirm--btn"]').click({ force: true });

cy.get('[data-testid="create-bean-btn"').click();
cy.closeStepConfigurationTab();
cy.openSourceCode();
cy.get('[data-testid="create-bean-btn"').click();
cy.closeStepConfigurationTab();
cy.openSourceCode();

// CHECK the bean was created in the code editor
cy.openSourceCode();
cy.checkCodeSpanLine('- beans:');
cy.checkCodeSpanLine('- name: test');
cy.checkCodeSpanLine('type: org.acme');
cy.checkCodeSpanLine('properties:');
cy.checkCodeSpanLine('test: value');
// CHECK the bean is referenced in the code editor
cy.checkCodeSpanLine('dataSource: "#test"');
// CHECK the bean was created in the code editor
cy.openSourceCode();
cy.checkCodeSpanLine('- name: test');
cy.checkCodeSpanLine('type: org.acme');
cy.checkCodeSpanLine('properties:');
cy.checkCodeSpanLine('test: value');
// CHECK the bean is referenced in the code editor
cy.checkCodeSpanLine('dataSource: "' + data.dataSource + '"');
});
});

it('Beans - select existing bean in node form config', () => {
cy.openSourceCode();
cy.uploadFixture('flows/SqlBeansCR.yaml');
const newTestData = [
{ file: 'SqlBeansKamelet.yaml', dataSource: '#bean:{{postgreSqlSource}}' },
{ file: 'SqlBeansCR.yaml', dataSource: '#postgreSqlSource' },
];
newTestData.forEach((data) => {
it('Beans - select existing bean in node form config ' + data.file, () => {
cy.openSourceCode();
cy.uploadFixture('flows/' + data.file);

cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.configureBeanReference('parameters.dataSource', 'mysqlPostgreSqlSource');
cy.openSourceCode();
cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.configureBeanReference('parameters.dataSource', data.dataSource);
cy.openSourceCode();

// CHECK the bean update was reflected in the code editor
cy.checkCodeSpanLine('dataSource: "#mysqlPostgreSqlSource"');
});
// CHECK the bean update was reflected in the code editor
cy.checkCodeSpanLine('dataSource: "' + data.dataSource + '"');
});

it('Beans - unselect selected bean', () => {
cy.openSourceCode();
cy.uploadFixture('flows/SqlBeansCR.yaml');
it('Beans - unselect selected bean', () => {
cy.openSourceCode();
cy.uploadFixture('flows/' + data.file);

cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.configureBeanReference('parameters.dataSource', 'mysqlPostgreSqlSource');
cy.openSourceCode();
cy.checkCodeSpanLine('dataSource: "#mysqlPostgreSqlSource"');
cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.configureBeanReference('parameters.dataSource', data.dataSource);
cy.openSourceCode();
cy.checkCodeSpanLine('dataSource: "' + data.dataSource + '"');

cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.deselectNodeBean('parameters.dataSource');
cy.openSourceCode();
cy.checkCodeSpanLine('dataSource: "#mysqlPostgreSqlSource"', 0);
cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.deselectNodeBean('parameters.dataSource');
cy.openSourceCode();
cy.checkCodeSpanLine('dataSource: "' + data.dataSource + '"', 0);
});
});

// blocked by https://github.com/KaotoIO/kaoto-next/issues/558
it.skip('Beans - delete bean using the bean editor', () => {
cy.uploadFixture('flows/SqlBeansCR.yaml');
cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.configureBeanReference('parameters.dataSource', 'mysqlPostgreSqlSource');
cy.configureBeanReference('parameters.dataSource', 'postgreSqlSource');

cy.openBeans();
// Remove the bean
cy.get('[data-testid="metadata-delete-1-btn"]').click();
cy.get('[data-testid="metadata-row-1"]').should('not.exist');
cy.openDesignPage();
cy.openStepConfigurationTab('sql');
cy.get(`div[data-fieldname="parameters.dataSource"] input[value="#mysqlPostgreSqlSource"]`).should('not.exist');
cy.get(`div[data-fieldname="parameters.dataSource"] input[value="#postgreSqlSource"]`).should('not.exist');
});
});
4 changes: 2 additions & 2 deletions packages/ui-tests/cypress/fixtures/flows/SqlBeansCR.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
username: dbuser
password: dbpass
driver-class-name: com.mysql.jdbc.Driver
- name: mysqlPostgreSqlSource
type: io.kaoto.MysqlPostgreSqlSource
- name: postgreSqlSource
type: io.kaoto.PostgreSqlSource
properties:
port: "5432"
url: jdbc:postgresql://localhost/test
Expand Down
62 changes: 62 additions & 0 deletions packages/ui-tests/cypress/fixtures/flows/SqlBeansKamelet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
annotations:
camel.apache.org/catalog.version: main-SNAPSHOT
camel.apache.org/kamelet.group: Users
camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgNjAgNjAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYwIDYwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGQ9Ik00OC4wMTQsNDIuODg5bC05LjU1My00Ljc3NkMzNy41NiwzNy42NjIsMzcsMzYuNzU2LDM3LDM1Ljc0OHYtMy4zODFjMC4yMjktMC4yOCwwLjQ3LTAuNTk5LDAuNzE5LTAuOTUxCgljMS4yMzktMS43NSwyLjIzMi0zLjY5OCwyLjk1NC01Ljc5OUM0Mi4wODQsMjQuOTcsNDMsMjMuNTc1LDQzLDIydi00YzAtMC45NjMtMC4zNi0xLjg5Ni0xLTIuNjI1di01LjMxOQoJYzAuMDU2LTAuNTUsMC4yNzYtMy44MjQtMi4wOTItNi41MjVDMzcuODU0LDEuMTg4LDM0LjUyMSwwLDMwLDBzLTcuODU0LDEuMTg4LTkuOTA4LDMuNTNDMTcuNzI0LDYuMjMxLDE3Ljk0NCw5LjUwNiwxOCwxMC4wNTYKCXY1LjMxOWMtMC42NCwwLjcyOS0xLDEuNjYyLTEsMi42MjV2NGMwLDEuMjE3LDAuNTUzLDIuMzUyLDEuNDk3LDMuMTA5YzAuOTE2LDMuNjI3LDIuODMzLDYuMzYsMy41MDMsNy4yMzd2My4zMDkKCWMwLDAuOTY4LTAuNTI4LDEuODU2LTEuMzc3LDIuMzJsLTguOTIxLDQuODY2QzguODAxLDQ0LjQyNCw3LDQ3LjQ1OCw3LDUwLjc2MlY1NGMwLDQuNzQ2LDE1LjA0NSw2LDIzLDZzMjMtMS4yNTQsMjMtNnYtMy4wNDMKCUM1Myw0Ny41MTksNTEuMDg5LDQ0LjQyNyw0OC4wMTQsNDIuODg5eiIvPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K
camel.apache.org/kamelet.support.level: Stable
camel.apache.org/provider: Apache Software Foundation
labels:
camel.apache.org/kamelet.type: source
name: kamelet-3024
spec:
definition:
description: Produces periodic events about random users!
properties:
period:
default: 5000
description: The time interval between two events
title: Period
type: integer
title: kamelet-3024
type: object
dependencies:
- camel:timer
- camel:http
- camel:kamelet
template:
beans:
- name: mysqlDataSource
properties:
driver-class-name: com.mysql.jdbc.Driver
password: dbpass
port: "3306"
url: jdbc:mysql://localhost/test
username: dbuser
type: io.kaoto.MysqlDataSource
- name: postgreSqlSource
properties:
driver-class-name: org.postgresql.Driver
password: dbpass
port: "5432"
url: jdbc:postgresql://localhost/test
username: dbuser
type: io.kaoto.PostgreSqlSource
from:
steps:
- to:
id: to-2047
parameters:
dataSource: ""
uri: sql
- to: kamelet:sink
id: from-2814
parameters:
exceptionHandler: "#bean:{{test}}"
period: "{{period}}"
timerName: user
uri: timer
types:
out:
mediaType: application/json
2 changes: 1 addition & 1 deletion packages/ui-tests/cypress/support/next-commands/design.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ Cypress.Commands.add('configureBeanReference', (inputName: string, value?: strin
cy.get(`[data-fieldname="${inputName}"]`).scrollIntoView();
cy.get(`[data-fieldname="${inputName}"] input`).click();
cy.get(`[id$="${value}"]`).click();
cy.get(`div[data-fieldname="${inputName}"] input[value="#${value}"]`).should('exist');
cy.get(`div[data-fieldname="${inputName}"] input[value="${value}"]`).should('exist');
});

Cypress.Commands.add('deselectNodeBean', (inputName: string) => {
Expand Down

0 comments on commit 60f92a0

Please sign in to comment.