Skip to content

Commit

Permalink
support composite foreign keys and primary keys through console (close
Browse files Browse the repository at this point in the history
  • Loading branch information
wawhal committed Apr 10, 2019
1 parent 9e7d928 commit 8a6d1c6
Show file tree
Hide file tree
Showing 58 changed files with 3,059 additions and 2,405 deletions.
3 changes: 2 additions & 1 deletion console/.eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@
"jsx-a11y/anchor-is-valid": 0,
"jsx-a11y/lang": 0,
"jsx-a11y/alt-text": 0,
"max-len": 0
"max-len": 0,
"no-continue": 0
},
"plugins": [
"react", "import", "cypress"
Expand Down
82 changes: 55 additions & 27 deletions console/cypress/integration/data/create-table/spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,29 +65,6 @@ export const failCTDuplicateColumns = () => {
validateCT(getTableName(0, testName), 'failure');
};

export const failCTDuplicatePrimaryKey = () => {
// Set second column
cy.get(getElementFromAlias('column-1'))
.clear()
.type(getColName(1));
cy.get(getElementFromAlias('col-type-1')).select('serial');
// Set primary key
cy.get(getElementFromAlias('primary-key-select-0')).select('0');
cy.get(getElementFromAlias('primary-key-select-1')).select('0');
cy.on('window:alert', str => {
expect(
str ===
`You key [${getColName(
0
)}] is already present in the current set of primary keys.`
).to.be.true;
});
// Check if the route didn't change
cy.url().should('eq', `${baseUrl}/data/schema/public/table/add`);
// Validate
validateCT(getTableName(0, testName), 'failure');
};

export const failCTWrongDefaultValue = () => {
// Set second column
cy.get(getElementFromAlias('column-1'))
Expand All @@ -110,10 +87,11 @@ export const passCT = () => {
cy.get(getElementFromAlias('column-1'))
.clear()
.type(getColName(1));
cy.get(getElementFromAlias('col-type-1')).select('serial');
cy.get(getElementFromAlias('col-type-1')).select('text');
cy.get(getElementFromAlias('col-default-1')).clear();
// Set primary key
cy.get(getElementFromAlias('primary-key-select-0')).select('0');
cy.get(getElementFromAlias('primary-key-select-1')).select('1');
// Click on create
cy.get(getElementFromAlias('table-create')).click();
cy.wait(10000);
Expand All @@ -127,6 +105,44 @@ export const passCT = () => {
validateCT(getTableName(0, testName), 'success');
};

export const passCTWithFK = () => {
// go to create-table
cy.get(getElementFromAlias('sidebar-add-table')).click();
// Set tablename
cy.get(getElementFromAlias('tableName'))
.clear()
.type(getTableName(1, testName)); // Set first column
cy.get(getElementFromAlias('column-0')).type(getColName(0));
cy.get(getElementFromAlias('col-type-0')).select('serial');
// Set second column
cy.get(getElementFromAlias('column-1')).type(getColName(1));
cy.get(getElementFromAlias('col-type-1')).select('text');
// Set primary key
cy.get(getElementFromAlias('primary-key-select-0')).select('0');
// Set foreign key
cy.get(getElementFromAlias('add-table-edit-fk-0')).click();
cy.get(getElementFromAlias('foreign-key-ref-table-0')).select(
getTableName(0, testName)
);
cy.get(getElementFromAlias('foreign-key-0-lcol-0')).select('0');
cy.get(getElementFromAlias('foreign-key-0-rcol-0')).select(getColName(0));
cy.get(getElementFromAlias('foreign-key-0-lcol-1')).select('1');
cy.get(getElementFromAlias('foreign-key-0-rcol-1')).select(getColName(1));
cy.get(getElementFromAlias('foreign-key-0-onUpdate-cascade')).check();
cy.get(getElementFromAlias('foreign-key-0-onDelete-cascade')).check();
// Click on create
cy.get(getElementFromAlias('table-create')).click();
cy.wait(10000);
// Check if the table got created and navigatied to modify table
cy.url().should(
'eq',
`${baseUrl}/data/schema/public/tables/${getTableName(1, testName)}/modify`
);
cy.get(getElementFromAlias(getTableName(1, testName)));
// Validate
validateCT(getTableName(1, testName), 'success');
};

export const failCTDuplicateTable = () => {
// Visit data page
cy.get(getElementFromAlias('sidebar-add-table')).click();
Expand All @@ -145,7 +161,19 @@ export const failCTDuplicateTable = () => {
};

export const deleteCTTestTable = () => {
// Go to the modify section of the table
// Go to the modify section of the second table
cy.get(getElementFromAlias(`${getTableName(1, testName)}`)).click();
cy.get(getElementFromAlias('table-modify')).click();
// Click on delete
cy.get(getElementFromAlias('delete-table')).click();
// Confirm
cy.on('window:confirm', str => {
expect(str === 'Are you sure?').to.be.true;
return true;
});
cy.wait(5000);
validateCT(getTableName(1, testName), 'failure');
// Go to the modify section of the first table
cy.get(getElementFromAlias(`${getTableName(0, testName)}`)).click();
cy.get(getElementFromAlias('table-modify')).click();
// Click on delete
Expand All @@ -155,8 +183,8 @@ export const deleteCTTestTable = () => {
expect(str === 'Are you sure?').to.be.true;
return true;
});
cy.wait(7000);
// Match the URL
cy.wait(5000);
//Match the URL
cy.url().should('eq', `${baseUrl}/data/schema/public`);
// Validate
validateCT(getTableName(0, testName), 'failure');
Expand Down
3 changes: 2 additions & 1 deletion console/cypress/integration/data/create-table/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
failAddExistingTable,
passAddExistingTable,
deleteCTTestTable,
passCTWithFK,
} from './spec';

const setup = () => {
Expand All @@ -35,9 +36,9 @@ export const runCreateTableTests = () => {
it('Fails to create table without columns', failCTWithoutColumns);
it('Fails to create table without primary key', failCTWithoutPK);
it('Fails to create with duplicate columns', failCTDuplicateColumns);
it('Fails to create with duplicate primary key', failCTDuplicatePrimaryKey);
it('Fails to create with wrong default value', failCTWrongDefaultValue);
it('Successfuly creates table', passCT);
it('Successfuly creates table with primary key', passCTWithFK);
it('Fails to create duplicate table', failCTDuplicateTable);
it('Delete off the test table', deleteCTTestTable);
});
Expand Down
4 changes: 3 additions & 1 deletion console/cypress/integration/data/functions/spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ export const verifyPermissionTab = () => {
`data/schema/public/functions/${getCustomFunctionName(1)}/permissions`
);
cy.wait(5000);
cy.get(getElementFromAlias('custom-function-permission-btn')).should('exist');
cy.get(getElementFromAlias('custom-function-permission-link')).should(
'exist'
);
cy.wait(5000);
};

Expand Down
16 changes: 9 additions & 7 deletions console/cypress/integration/data/insert-browse/spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -433,14 +433,16 @@ export const checkViewRelationship = () => {
cy.wait(7000);
validateCT(getTableName(0, testName), 'success');
// Add foreign key
cy.get(getElementFromAlias('edit-someID')).click();
cy.get(getElementFromAlias('foreign-key-checkbox')).check();
cy.get(getElementFromAlias('ref-table')).select(getTableName(0, testName));
cy.get(getElementFromAlias('ref-col')).select(getColName(0));
cy.get(getElementFromAlias('save-button')).click();
cy.wait(1000);
cy.get(getElementFromAlias('modify-table-edit-fk-0')).click();
cy.get(getElementFromAlias('foreign-key-ref-table-0')).select(
getTableName(0, testName)
);
cy.get(getElementFromAlias('foreign-key-0-lcol-0')).select('0');
cy.get(getElementFromAlias('foreign-key-0-rcol-0')).select(getColName(0));
cy.get(getElementFromAlias('modify-table-fk-0-save')).click();
cy.wait(5000);
// Add relationship
cy.get(getElementFromAlias('add-rel-mod')).click();
cy.get(getElementFromAlias('table-relationships')).click();
cy.get(getElementFromAlias('obj-rel-add-0')).click();
cy.get(getElementFromAlias('suggested-rel-name'))
.clear()
Expand Down
56 changes: 35 additions & 21 deletions console/cypress/integration/data/modify/spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@ export const passMTCreateTable = () => {
'eq',
`${baseUrl}/data/schema/public/tables/${getTableName(0, testName)}/modify`
);

validateCT(getTableName(0, testName), 'success');
};

export const passMTCheckRoute = () => {
// Click on the create table button
cy.get(getElementFromAlias('table-modify')).click();
Expand Down Expand Up @@ -58,19 +56,19 @@ export const passMTRenameTable = () => {
};

export const passMTRenameColumn = () => {
cy.get(getElementFromAlias('edit-id')).click();
cy.get(getElementFromAlias('modify-table-edit-column-0')).click();
cy.get(getElementFromAlias('edit-col-name'))
.clear()
.type(getColName(3));
cy.get(getElementFromAlias('save-button')).click();
cy.wait(2500);
cy.get(getElementFromAlias('modify-table-column-0-save')).click();
cy.wait(5000);
validateColumn(getTableName(0, testName), [getColName(3)], 'success');
cy.get(getElementFromAlias(`edit-${getColName(3)}`)).click();
cy.get(getElementFromAlias('modify-table-edit-column-0')).click();
cy.get(getElementFromAlias('edit-col-name'))
.clear()
.type('id');
cy.get(getElementFromAlias('save-button')).click();
cy.wait(2500);
cy.get(getElementFromAlias('modify-table-column-0-save')).click();
cy.wait(5000);
validateColumn(getTableName(0, testName), ['id'], 'success');
};

Expand Down Expand Up @@ -141,41 +139,57 @@ export const passMTAddColumn = () => {

export const Movetocolumn = () => {
Addcolumnname(getColName(1));
cy.get(getElementFromAlias(`edit-${getColName(1)}`)).click();
cy.get(getElementFromAlias('modify-table-edit-column-1')).click();
};

export const failMCWithWrongDefaultValue = () => {
cy.get(getElementFromAlias(`edit-${getColName(0)}`)).click();
cy.get(getElementFromAlias('modify-table-edit-column-1')).click();
cy.get(getElementFromAlias('edit-col-default')).type('abcd');
cy.get(getElementFromAlias('save-button')).click();
cy.get(getElementFromAlias('modify-table-column-1-save')).click();
};

export const passMCWithRightDefaultValue = () => {
cy.get(getElementFromAlias('edit-col-default'))
.clear()
.type('1234');
cy.get(getElementFromAlias('save-button')).click();
cy.wait(15000);
cy.get(getElementFromAlias('modify-table-column-1-save')).click();
cy.wait(10000);
};

export const passCreateForeignKey = () => {
cy.get(getElementFromAlias('edit-col-unique')).select('True');
cy.get(getElementFromAlias('foreign-key-checkbox')).check();
cy.get(getElementFromAlias('ref-table')).select(getTableName(0, testName));
cy.get(getElementFromAlias('ref-col')).select(getColName(0));
cy.get(getElementFromAlias('save-button')).click();
cy.wait(15000);
cy.get(getElementFromAlias('modify-table-edit-fk-0')).click();
cy.get(getElementFromAlias('foreign-key-ref-table-0')).select(
getTableName(0, testName)
);
cy.get(getElementFromAlias('foreign-key-0-lcol-0')).select('0');
cy.get(getElementFromAlias('foreign-key-0-rcol-0')).select('id');
cy.get(getElementFromAlias('modify-table-fk-0-save')).click();
cy.wait(10000);
};

export const passRemoveForeignKey = () => {
cy.get(getElementFromAlias('remove-constraint-button')).click();
cy.get(getElementFromAlias('modify-table-edit-fk-0')).click();
cy.get(getElementFromAlias('modify-table-fk-0-remove')).click();
cy.wait(10000);
};

export const passModifyPkey = () => {
cy.get(getElementFromAlias('modify-table-edit-pks')).click();
cy.get(getElementFromAlias('primary-key-select-1')).select('1');
cy.get(getElementFromAlias('modify-table-pks-save')).click();
cy.wait(5000);
// TODO
// test disappearance expect
// (cy.get(getElementFromAlias('modify-table-column-1-remove'))).not.to.exist;
cy.get(getElementFromAlias('remove-pk-column-1')).click();
cy.get(getElementFromAlias('modify-table-pks-save')).click();
cy.get(getElementFromAlias('modify-table-close-pks')).click();
};

export const passMTDeleteCol = () => {
// cy.get(getElementFromAlias(`edit-${getColName(0)}`)).click();
// cy.wait(500);
cy.get(getElementFromAlias('remove-button')).click();
cy.get(getElementFromAlias('modify-table-column-1-remove')).click();
cy.on('window:alert', str => {
expect(str === 'Are you sure you want to delete?').to.be.true;
});
Expand Down
2 changes: 2 additions & 0 deletions console/cypress/integration/data/modify/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
passRemoveForeignKey,
passMTRenameTable,
passMTRenameColumn,
passModifyPkey,
} from './spec';

import { testMode } from '../../../helpers/common';
Expand Down Expand Up @@ -47,6 +48,7 @@ export const runModifyTableTests = () => {
it('Pass modify with wrong default value', passMCWithRightDefaultValue);
it('Pass create foreign-key', passCreateForeignKey);
it('Pass remove foreign-key', passRemoveForeignKey);
it('Pass modifying a primary key', passModifyPkey);
it('Delete the column', passMTDeleteCol);
it('Delete Table Cancel', passMTDeleteTableCancel);
it('Delete table', passMTDeleteTable);
Expand Down
56 changes: 29 additions & 27 deletions console/cypress/integration/data/relationships/spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,35 @@ export const Createtable = (name, fields) => {

// Select primary key
cy.get(getElementFromAlias('primary-key-select-0')).select('id');

if (name === 'article') {
cy.get(getElementFromAlias('add-table-edit-fk-0')).click();
cy.get(getElementFromAlias('foreign-key-ref-table-0')).select(
'author_table_rt'
);
cy.get(getElementFromAlias('foreign-key-0-lcol-0')).select('3');
cy.get(getElementFromAlias('foreign-key-0-rcol-0')).select('id');
cy.get(getElementFromAlias('foreign-key-0-onUpdate-cascade')).check();
cy.get(getElementFromAlias('foreign-key-0-onDelete-cascade')).check();
} else if (name === 'comment') {
cy.get(getElementFromAlias('add-table-edit-fk-0')).click();
cy.get(getElementFromAlias('foreign-key-ref-table-0')).select(
'author_table_rt'
);
cy.get(getElementFromAlias('foreign-key-0-lcol-0')).select('1');
cy.get(getElementFromAlias('foreign-key-0-rcol-0')).select('id');
cy.get(getElementFromAlias('foreign-key-0-onUpdate-cascade')).check();
cy.get(getElementFromAlias('foreign-key-0-onDelete-cascade')).check();
cy.get(getElementFromAlias('add-table-edit-fk-1')).click();
cy.get(getElementFromAlias('foreign-key-ref-table-1')).select(
'article_table_rt'
);
cy.get(getElementFromAlias('foreign-key-1-lcol-0')).select('2');
cy.get(getElementFromAlias('foreign-key-1-rcol-0')).select('id');
cy.get(getElementFromAlias('foreign-key-1-onUpdate-cascade')).check();
cy.get(getElementFromAlias('foreign-key-1-onDelete-cascade')).check();
}

cy.get(getElementFromAlias('table-create')).click();
cy.wait(15000);
cy.url().should(
Expand Down Expand Up @@ -125,33 +154,6 @@ export const passRTAddManualArrayRel = () => {
);
};

export const passRTAddForeignKey = () => {
cy.get(getElementFromAlias('article_table_rt')).click();
cy.get(getElementFromAlias('table-modify')).click();
cy.get(getElementFromAlias('edit-author_id')).click();
cy.get(getElementFromAlias('foreign-key-checkbox')).check();
cy.get(getElementFromAlias('ref-table')).select('author_table_rt');
cy.get(getElementFromAlias('ref-col')).select('id');
cy.get(getElementFromAlias('save-button')).click();
cy.wait(15000);
cy.get(getElementFromAlias('comment_table_rt')).click();
cy.get(getElementFromAlias('table-modify')).click();
cy.get(getElementFromAlias('edit-article_id')).click();
cy.get(getElementFromAlias('foreign-key-checkbox')).check();
cy.get(getElementFromAlias('ref-table')).select('article_table_rt');
cy.get(getElementFromAlias('ref-col')).select('id');
cy.get(getElementFromAlias('save-button')).click();
cy.wait(15000);
};

export const checkAddManualRelationshipsButton = () => {
cy.get(getElementFromAlias('add-rel-mod')).click();
cy.url().should(
'eq',
`${baseUrl}/data/schema/public/tables/comment_table_rt/relationships`
);
};

export const passRTDeleteRelationships = () => {
delRel('article_table_rt', 'author');
validateColumn(
Expand Down
Loading

0 comments on commit 8a6d1c6

Please sign in to comment.