From 0ece662d8c983c263fb73a6da25827e3c443b26d Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 5 Mar 2025 14:21:19 +0100 Subject: [PATCH] SYNC: CSV import test --- e2e-tests/cypress/e2e/browse-data.cy.js | 13 ---- e2e-tests/cypress/e2e/multi-sql.cy.js | 63 ++++++++++++------- e2e-tests/cypress/fixtures/customers-20.csv | 21 +++++++ .../src/controllers/databaseConnections.js | 1 + packages/web/src/tabs/ImportExportTab.svelte | 12 +++- .../web/src/widgets/ConnectionList.svelte | 1 + 6 files changed, 74 insertions(+), 37 deletions(-) create mode 100644 e2e-tests/cypress/fixtures/customers-20.csv diff --git a/e2e-tests/cypress/e2e/browse-data.cy.js b/e2e-tests/cypress/e2e/browse-data.cy.js index f0dd62f3d..107888cb7 100644 --- a/e2e-tests/cypress/e2e/browse-data.cy.js +++ b/e2e-tests/cypress/e2e/browse-data.cy.js @@ -403,17 +403,4 @@ describe('Data browser data', () => { cy.contains('Novak'); cy.contains('Rows: 8'); }); - - // it('Import', () => { - // TBC after Import FIX - // cy.contains('MySql-connection').click(); - // cy.contains('MyChinook').click(); - // cy.contains('Customer').rightclickclick(); - // cy.contains('Import').click(); - // cy.get('input[type=file]').selectFile('cypress/fixtures/Customer_add.csv'); - // cy.get('table tbody tr').eq(1).within(() => { - // cy.get('select').select('Append data'); - // }); - - // }); }); diff --git a/e2e-tests/cypress/e2e/multi-sql.cy.js b/e2e-tests/cypress/e2e/multi-sql.cy.js index 11ddfe572..7cbbd76c9 100644 --- a/e2e-tests/cypress/e2e/multi-sql.cy.js +++ b/e2e-tests/cypress/e2e/multi-sql.cy.js @@ -30,35 +30,35 @@ beforeEach(() => { function multiTest(testName, testDefinition) { if (localconfig.mysql) { - it(testName + ' MySQL', () => testDefinition('MySql-connection', 'mysql@dbgate-plugin-mysql')); + it(testName + ' MySQL', () => testDefinition('MySql-connection', 'my_guitar_shop', 'mysql@dbgate-plugin-mysql')); } if (localconfig.postgres) { - it(testName + ' Postgres', () => testDefinition('Postgres-connection', 'postgres@dbgate-plugin-postgres')); + it(testName + ' Postgres', () => + testDefinition('Postgres-connection', 'my_guitar_shop', 'postgres@dbgate-plugin-postgres') + ); } if (localconfig.mssql) { - it(testName + ' Mssql', () => testDefinition('Mssql-connection', 'mssql@dbgate-plugin-mssql')); + it(testName + ' Mssql', () => testDefinition('Mssql-connection', 'my_guitar_shop', 'mssql@dbgate-plugin-mssql')); } if (localconfig.oracle) { it(testName + ' Oracle', () => - testDefinition('Oracle-connection', 'oracle@dbgate-plugin-oracle', { - databaseName: 'C##MY_GUITAR_SHOP', + testDefinition('Oracle-connection', 'C##MY_GUITAR_SHOP', 'oracle@dbgate-plugin-oracle', { implicitTransactions: true, }) ); } if (localconfig.sqlite) { - it(testName + ' Sqlite', () => testDefinition('Sqlite-connection', 'sqlite@dbgate-plugin-sqlite')); + it(testName + ' Sqlite', () => testDefinition('Sqlite-connection', null, 'sqlite@dbgate-plugin-sqlite')); } } describe('Transactions', () => { - multiTest('Transactions', (connectionName, engine, options = {}) => { + multiTest('Transactions', (connectionName, databaseName, engine, options = {}) => { const driver = requireEngineDriver(engine); - const databaseName = options.databaseName ?? 'my_guitar_shop'; const implicitTransactions = options.implicitTransactions ?? false; cy.contains(connectionName).click(); - cy.contains(databaseName).click(); + if (databaseName) cy.contains(databaseName).click(); cy.testid('TabsPanel_buttonNewQuery').click(); cy.wait(1000); cy.get('body').type( @@ -101,11 +101,9 @@ describe('Transactions', () => { }); describe('Backup table', () => { - multiTest('Backup table', (connectionName, engine, options = {}) => { - const databaseName = options.databaseName ?? 'my_guitar_shop'; - + multiTest('Backup table', (connectionName, databaseName, engine, options = {}) => { cy.contains(connectionName).click(); - cy.contains(databaseName).click(); + if (databaseName) cy.contains(databaseName).click(); cy.contains('customers').rightclick(); cy.contains('Create table backup').click(); cy.testid('ConfirmSqlModal_okButton').click(); @@ -115,11 +113,9 @@ describe('Backup table', () => { }); describe('Truncate table', () => { - multiTest('Truncate table', (connectionName, engine, options = {}) => { - const databaseName = options.databaseName ?? 'my_guitar_shop'; - + multiTest('Truncate table', (connectionName, databaseName, engine, options = {}) => { cy.contains(connectionName).click(); - cy.contains(databaseName).click(); + if (databaseName) cy.contains(databaseName).click(); cy.contains('order_items').rightclick(); cy.contains('Truncate table').click(); cy.testid('ConfirmSqlModal_okButton').click(); @@ -129,14 +125,39 @@ describe('Truncate table', () => { }); describe('Drop table', () => { - multiTest('Drop table', (connectionName, engine, options = {}) => { - const databaseName = options.databaseName ?? 'my_guitar_shop'; - + multiTest('Drop table', (connectionName, databaseName, engine, options = {}) => { cy.contains(connectionName).click(); - cy.contains(databaseName).click(); + if (databaseName) cy.contains(databaseName).click(); cy.contains('order_items').rightclick(); cy.contains('Drop table').click(); cy.testid('ConfirmSqlModal_okButton').click(); cy.contains('order_items').should('not.exist'); }); }); + +describe('Import CSV', () => { + multiTest('Import CSV', (connectionName, databaseName, engine, options = {}) => { + cy.contains(connectionName).click(); + if (databaseName) cy.contains(databaseName).click(); + cy.testid('ConnectionList_container') + .contains(databaseName ?? connectionName) + .rightclick(); + cy.contains('Import').click(); + + cy.get('input[type=file]').selectFile('cypress/fixtures/customers-20.csv', { force: true }); + cy.contains('customers-20'); + + cy.testid('ImportExportTab_executeButton').click(); + cy.contains('20 rows written').should('be.visible'); + + cy.testid('SqlObjectList_refreshButton').click(); + cy.testid('SqlObjectList_container').contains('customers-20').click(); + cy.contains('Rows: 20').should('be.visible'); + + // cy.get('table tbody tr') + // .eq(1) + // .within(() => { + // cy.get('select').select('Append data'); + // }); + }); +}); diff --git a/e2e-tests/cypress/fixtures/customers-20.csv b/e2e-tests/cypress/fixtures/customers-20.csv new file mode 100644 index 000000000..af5fa719b --- /dev/null +++ b/e2e-tests/cypress/fixtures/customers-20.csv @@ -0,0 +1,21 @@ +Index,Customer Id,First Name,Last Name,Company,City,Country,Phone 1,Phone 2,Email,Subscription Date,Website +1,50ddd99fAdF48B3,Jessica,Navarro,"Tran, Odom and Graham",Port Terranceview,Jersey,(883)287-7947,479-044-3187,wmcintyre@myers.net,2023-03-11,http://pennington.com/ +2,BD1AB97979DDcDe,Preston,Andrews,"Townsend, Lawrence and Davenport",Harringtonmouth,Croatia,188-270-5676x63873,001-428-148-4270,bradley63@jacobs.net,2023-11-15,http://burke.com/ +3,0FDDD9aCa501acE,Melissa,Mckay,Rivas-Cooke,Oliviabury,Cook Islands,8257631531,001-650-689-5600x927,ugalloway@maxwell-mcclain.com,2025-01-25,https://patrick.com/ +4,A7dA284B7c4AfaD,Frank,Livingston,"Lambert, Garner and Mathews",Mallorytown,Faroe Islands,766.182.6201x689,+1-476-912-2027x4370,tracie00@webster.biz,2021-03-27,https://www.hart.com/ +5,38bb1624e4f8211,Ross,Mendoza,Cook and Sons,New Perry,Bolivia,001-440-468-2236,165.562.4328x9274,austincarmen@abbott.com,2024-12-12,http://harmon.com/ +6,55c9Fda2BABFE1a,Jane,Tate,Knapp PLC,West Kathyshire,Morocco,001-606-447-0584x07975,(003)872-1307x285,carlosgomez@mcpherson-ramos.biz,2021-09-13,http://www.yu.com/ +7,A15eccAc67cCc5b,Tanya,Chung,Frost Inc,South Julieburgh,United States of America,778-360-8301x268,+1-034-169-4237,onewton@crosby.com,2024-10-01,http://www.gill-velez.biz/ +8,aFdab04acACaf90,Jackson,Moyer,Bowen Ltd,Port Triciabury,Bahrain,001-187-882-2891x169,154.903.2525,gabriela16@mejia.org,2023-06-20,http://www.david.biz/ +9,A2EaeAd3c6529B9,Kelly,Douglas,Phillips PLC,Weissberg,Qatar,767.177.3199x5576,5156730935,wigginsmercedes@tanner.com,2021-06-30,https://gonzalez.net/ +10,188175A5641d080,Mariah,Riddle,"Mata, Fuller and Good",Choiton,Namibia,092-993-3559x342,190.937.3937,eileen32@greer.biz,2021-04-17,http://www.bowen.info/ +11,B2BA817C7bC09f0,Kristine,Pennington,"Koch, Diaz and Valdez",Port Rachael,Suriname,877.152.6488x921,790-804-9979x3290,tonya00@flynn.com,2024-03-28,https://www.rocha.net/ +12,fFAD70B5Febc43a,Robert,Adams,Bender-Wolfe,Billfort,Tanzania,219-696-1912x93626,518-969-4058,jeffersoncolton@moss-ashley.com,2022-07-31,https://www.alvarez.com/ +13,9a44524E1261Ed6,Franklin,Costa,Werner Group,North Bradley,Cook Islands,(895)448-4681x1999,648-345-3083x88242,marksmith@novak.com,2024-12-03,http://thornton.com/ +14,0C360EfE17D06cc,Dan,Ballard,Sampson-Huff,Michaelchester,Sao Tome and Principe,+1-803-469-5237x2580,(729)574-6101x0605,molly54@acevedo.info,2022-10-24,https://www.sloan-gonzales.biz/ +15,fb5cE8cb1eF2954,Clifford,Moyer,Fry-Whitehead,Lake Gary,Japan,(504)263-0450,247.514.1614x551,rhonda34@orr.com,2020-03-08,https://norton.com/ +16,3e53DcaD1cB0054,Tonya,Durham,"Lowe, West and Reynolds",South Sylviaton,Brunei Darussalam,(613)893-8183,(461)399-6120,kiara96@meadows.biz,2022-08-04,https://www.reeves.com/ +17,83fDDE5812EbEde,Dale,Bishop,Shaw-Ray,Lake Miranda,Congo,(082)202-9241,+1-413-610-1854x79378,bhoward@hodges.biz,2023-05-08,http://www.escobar.com/ +18,8dB7ACe2C5758cE,Priscilla,Mills,Pope PLC,North Cliffordshire,South Georgia and the South Sandwich Islands,+1-465-802-4573x30191,044-393-6049x598,nathaniel28@hess.com,2020-09-08,https://www.watts.org/ +19,c1092ebDaF2ceED,Alice,Bond,Chan-Liu,West Wesley,Lithuania,+1-333-285-8515,(715)759-3158x77103,jose92@peters.com,2024-05-30,http://www.marquez.com/ +20,4d0c95579D095aF,Cole,Compton,Calderon PLC,Robertaville,Saudi Arabia,029.862.3387x470,001-319-474-2394,sspence@dorsey.com,2020-08-02,http://hamilton.net/ diff --git a/packages/api/src/controllers/databaseConnections.js b/packages/api/src/controllers/databaseConnections.js index 823c947c5..7e811a7fd 100644 --- a/packages/api/src/controllers/databaseConnections.js +++ b/packages/api/src/controllers/databaseConnections.js @@ -233,6 +233,7 @@ module.exports = { dispatchDatabaseChangedEvent_meta: true, dispatchDatabaseChangedEvent({ event, conid, database }) { socket.emitChanged(event, { conid, database }); + return null; }, loadKeys_meta: true, diff --git a/packages/web/src/tabs/ImportExportTab.svelte b/packages/web/src/tabs/ImportExportTab.svelte index 47ef6ac40..a53dda4e1 100644 --- a/packages/web/src/tabs/ImportExportTab.svelte +++ b/packages/web/src/tabs/ImportExportTab.svelte @@ -298,11 +298,17 @@ {#if busy} - Stop + Stop {:else} - Run + Run {/if} - Generate script + Generate script diff --git a/packages/web/src/widgets/ConnectionList.svelte b/packages/web/src/widgets/ConnectionList.svelte index 85cc5541b..463e46e23 100644 --- a/packages/web/src/widgets/ConnectionList.svelte +++ b/packages/web/src/widgets/ConnectionList.svelte @@ -248,6 +248,7 @@ handleDropOnGroup(data, ''); } }} + data-testid="ConnectionList_container" >