import { mainPage, settingsPage } from "../../support/page_objects/mainPage"; import {loginPage, projectsPage} from "../../support/page_objects/navigation"; import { isTestSuiteActive, sakilaSqlViews, sakilaTables } from "../../support/page_objects/projectConstants"; export const genTest = (apiType, dbType) => { if (!isTestSuiteActive(apiType, dbType)) return; describe(`${apiType.toUpperCase()} ERD`, () => { // before(() => { // loginPage.loginAndOpenProject(apiType, dbType); // cy.openTableTab("Country", 25); // cy.saveLocalStorage(); // }); beforeEach(() => { cy.restoreLocalStorage(); }) afterEach(() => { cy.saveLocalStorage(); }) after(() => { cy.restoreLocalStorage(); cy.closeTableTab("Country"); cy.saveLocalStorage(); }); // Test cases it(`Enable MM setting Open Table ERD`, () => { mainPage.toggleShowMMSetting(); mainPage.openErdTab(); mainPage.closeMetaTab(); }); it(`Verify ERD Context menu in all table view`, () => { mainPage.openErdTab(); cy.get('.nc-erd-context-menu').should('be.visible'); cy.get('.nc-erd-context-menu').get('.nc-erd-histogram').should('be.visible'); cy.get('.nc-erd-context-menu').find('.ant-checkbox').should('have.length', 3); cy.get('.nc-erd-context-menu').find('.ant-checkbox').eq(0).should('have.class', 'ant-checkbox-checked'); cy.get('.nc-erd-context-menu').find('.ant-checkbox').eq(1).should('have.class', 'ant-checkbox-checked'); cy.get('.nc-erd-context-menu').find('.ant-checkbox').eq(2).should('not.have.class', 'ant-checkbox-checked'); cy.get('.nc-erd-context-menu').find('.nc-erd-showColumns-label').dblclick(); cy.get('.nc-erd-context-menu').find('.ant-checkbox').should('have.length', 5); }); it("Verify ERD of all tables view and verify columns of actor and payment with default config", () => { cy.get('.nc-erd-vue-flow').find('.nc-erd-table-node').should('have.length', 12) cy.get('.nc-erd-vue-flow').find('.vue-flow__edge').should('have.length', 14) cy.get('.nc-erd-vue-flow').find('.nc-erd-edge-circle').should('have.length', 11) cy.get('.nc-erd-vue-flow').find('.nc-erd-edge-rect').should('have.length', 17) for(const tableName of sakilaTables) { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-${tableName}`).should('exist'); } // Actor table [ 'actor_id', 'first_name', 'last_name', 'last_update', 'film_list' ].forEach((colTitle) => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-actor`).find(`.nc-erd-table-node-actor-column-${colTitle}`).should('exist'); }); // Payment table [ 'payment_id', 'customer_id', 'staff_id', 'rental_id', 'amount', 'payment_date', 'last_update', 'customer', 'rental', 'staff' ].forEach((colTitle) => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-payment`).find(`.nc-erd-table-node-payment-column-${colTitle}`).should('exist'); }); }); it("Verify ERD of all tables view and verify columns of actor and payment with default config with showAllColumn disabled", () => { cy.get('.nc-erd-context-menu').get('.nc-erd-showColumns-checkbox').click(); cy.get('.nc-erd-showPkAndFk-checkbox-disabled').should('exist'); cy.get('.nc-erd-showPkAndFk-checkbox-unchecked').should('exist'); // Actor table [ 'film_list' ].forEach((colTitle) => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-actor`).find(`.nc-erd-table-node-actor-column-${colTitle}`).should('exist'); }); // Payment table [ 'customer', 'rental', 'staff' ].forEach((colTitle) => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-payment`).find(`.nc-erd-table-node-payment-column-${colTitle}`).should('exist'); }); }); it("Verify ERD of all tables view and verify columns of actor and payment with default config with showPkAndFk disabled", () => { // enable showAllColumn cy.get('.nc-erd-context-menu').get('.nc-erd-showColumns-checkbox').click(); cy.get('.nc-erd-context-menu').get('.nc-erd-showPkAndFk-checkbox').click(); // Actor table [ 'last_name', 'last_update', 'film_list' ].forEach((colTitle) => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-actor`).find(`.nc-erd-table-node-actor-column-${colTitle}`).should('exist'); }); // Payment table [ 'amount', 'payment_date', 'last_update', 'customer', 'rental', 'staff' ].forEach((colTitle) => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-payment`).find(`.nc-erd-table-node-payment-column-${colTitle}`).should('exist'); }); }); it("Verify ERD of all tables view with sql grid on and verify columns of ActorInfo", () => { cy.get('.nc-erd-context-menu').get('.nc-erd-showViews-checkbox').click(); cy.get('.nc-erd-vue-flow').find('.nc-erd-table-node').should('have.length', 19) cy.get('.nc-erd-vue-flow').find('.vue-flow__edge').should('have.length', 14) cy.get('.nc-erd-vue-flow').find('.nc-erd-edge-circle').should('have.length', 11) cy.get('.nc-erd-vue-flow').find('.nc-erd-edge-rect').should('have.length', 17) for(const tableName of sakilaTables) { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-${tableName}`).should('exist'); } for(const tableName of sakilaSqlViews) { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-${tableName}`).should('exist'); } // ActorInfo SQL View [ 'actor_id', 'first_name', 'last_name', 'film_info' ].forEach((colTitle) => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-actor_info`).find(`.nc-erd-table-node-actor_info-column-${colTitle}`).should('exist'); }) }); it("Verify show MM tables", () => { cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-store`).should('not.exist'); // disable showViews cy.get('.nc-erd-context-menu').get('.nc-erd-showViews-checkbox').click(); cy.get('.nc-erd-context-menu').get('.nc-erd-showMMTables-checkbox').click(); cy.get('.nc-erd-vue-flow').find('.nc-erd-table-node').should('have.length', 16) cy.get('.nc-erd-vue-flow').find('.vue-flow__edge').should('have.length', 18) cy.get('.nc-erd-vue-flow').find('.nc-erd-edge-circle').should('have.length', 14) cy.get('.nc-erd-vue-flow').find('.nc-erd-edge-rect').should('have.length', 22) // Check if store table is present cy.get('.nc-erd-vue-flow').find(`.nc-erd-table-node-store`).should('exist'); }) it("Verify show junction table names", () => { // disable showViews cy.get('.nc-erd-context-menu').get('.nc-erd-showJunctionTableNames-checkbox').click(); cy.get('.nc-erd-vue-flow').get('.nc-erd-table-label-filmactor-film_actor').should('exist'); mainPage.closeMetaTab(); }) it('Verify table ERD view of country', () => { mainPage.openTableErdView(); cy.get('.nc-erd-vue-flow-single-table').find('.nc-erd-table-node').should('have.length', 2) cy.get('.nc-erd-vue-flow-single-table').find('.vue-flow__edge').should('have.length', 1) cy.get('.nc-erd-vue-flow-single-table').find('.nc-erd-edge-circle').should('have.length', 1) cy.get('.nc-erd-vue-flow-single-table').find('.nc-erd-edge-rect').should('have.length', 1) const countryColumns = [ 'country_id', 'country', 'last_update', 'city_list' ] // Country table countryColumns.forEach((colTitle) => { cy.get('.nc-erd-vue-flow-single-table').find(`.nc-erd-table-node-country`).find(`.nc-erd-table-node-country-column-${colTitle}`).should('exist'); }); const cityColumns = [ 'city_id', 'city', 'last_update', 'country', 'address_list' ] // City table cityColumns.forEach((colTitle) => { cy.get('.nc-erd-vue-flow-single-table').find(`.nc-erd-table-node-city`).find(`.nc-erd-table-node-city-column-${colTitle}`).should('exist'); }); }) it('Verify table ERD view of country showAllColumn disabled', () => { cy.get('.nc-erd-vue-flow-single-table').within(() => { cy.get('.nc-erd-context-menu').get('.nc-erd-showColumns-checkbox').click(); cy.get('.nc-erd-showPkAndFk-checkbox-disabled').should('exist'); cy.get('.nc-erd-showPkAndFk-checkbox-unchecked').should('exist'); const countryColumns = [ 'city_list' ] // Country table countryColumns.forEach((colTitle) => { cy.get(`.nc-erd-table-node-country`).find(`.nc-erd-table-node-country-column-${colTitle}`).should('exist'); }); const cityColumns = [ 'country', 'address_list' ] // City table cityColumns.forEach((colTitle) => { cy.get(`.nc-erd-table-node-city`).find(`.nc-erd-table-node-city-column-${colTitle}`).should('exist'); }); cy.get('.nc-erd-context-menu').get('.nc-erd-showColumns-checkbox').click(); }) }) it('Verify table ERD view of country show PK AND FK disabled', () => { cy.get('.nc-erd-vue-flow-single-table').within(() => { cy.get('.nc-erd-context-menu').get('.nc-erd-showPkAndFk-checkbox').click(); const countryColumns = [ 'country', 'last_update', 'city_list' ] // Country table countryColumns.forEach((colTitle) => { cy.get(`.nc-erd-table-node-country`).find(`.nc-erd-table-node-country-column-${colTitle}`).should('exist'); }); const cityColumns = [ 'city', 'last_update', 'country', 'address_list' ] // City table cityColumns.forEach((colTitle) => { cy.get(`.nc-erd-table-node-city`).find(`.nc-erd-table-node-city-column-${colTitle}`).should('exist'); }); cy.get('.nc-erd-context-menu').get('.nc-erd-showPkAndFk-checkbox').click(); }) cy.getActiveModal().find('.nc-modal-close').click({ force: true }); }) it('create column and check if the change is in the schema', () => { mainPage.addColumn('test_column', 'country') // table view mainPage.openTableErdView(); cy.get('.nc-erd-vue-flow-single-table').within(() => { cy.get('.nc-erd-table-node-country').find('.nc-erd-table-node-country-column-test_column').should('exist'); }) cy.getActiveModal().find('.nc-modal-close').click({ force: true }); // All table view mainPage.openErdTab(); cy.get('.nc-erd-vue-flow').within(() => { cy.get('.nc-erd-table-node-country').find('.nc-erd-table-node-country-column-test_column').should('exist'); }) mainPage.closeMetaTab(); mainPage.deleteColumn('test_column') // table view mainPage.openTableErdView(); cy.get('.nc-erd-vue-flow-single-table').within(() => { cy.get('.nc-erd-table-node-country').find('.nc-erd-table-node-country-column-test_column').should('not.exist'); }) cy.getActiveModal().find('.nc-modal-close').click({ force: true }); // All table view mainPage.openErdTab(); cy.get('.nc-erd-vue-flow').within(() => { cy.get('.nc-erd-table-node-country').find('.nc-erd-table-node-country-column-test_column').should('not.exist'); }) mainPage.closeMetaTab(); }) it('Create table should reflected in ERD', () => { cy.createTable('new') mainPage.openErdTab(); cy.get('.nc-erd-vue-flow').within(() => { cy.get('.nc-erd-table-node-new').should('exist'); }) mainPage.closeMetaTab(); cy.deleteTable('new') mainPage.openErdTab(); cy.get('.nc-erd-vue-flow').within(() => { cy.get('.nc-erd-table-node-new').should('not.exist'); }) mainPage.closeMetaTab(); }) it(`Disable MM setting Open Table ERD and check easter egg should not work`, () => { mainPage.toggleShowMMSetting(); mainPage.openErdTab(); cy.get('.nc-erd-vue-flow').within(() => { cy.get('.nc-erd-context-menu').find('.nc-erd-showColumns-label').dblclick(); cy.get('.nc-erd-context-menu').find('.ant-checkbox').should('have.length', 3); }) mainPage.closeMetaTab(); }); }); }; /** * @copyright Copyright (c) 2021, Xgene Cloud Ltd * * @author Raju Udava * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */