diff --git a/integration-tests/__tests__/object-analyse.spec.js b/integration-tests/__tests__/object-analyse.spec.js index 4e15cef15..d973a42aa 100644 --- a/integration-tests/__tests__/object-analyse.spec.js +++ b/integration-tests/__tests__/object-analyse.spec.js @@ -111,4 +111,26 @@ describe('Object analyse', () => { } }) ); + + test.each(flatSourceParameters())( + 'Test parameters create SQL - %s - %s', + testWrapper(async (conn, driver, testName, parameter, engine) => { + for (const sql of initSql) await driver.query(conn, sql, { discardResult: true }); + + await driver.query(conn, parameter.create, { discardResult: true }); + const structure1 = await driver.analyseFull(conn); + await driver.query(conn, parameter.drop, { discardResult: true }); + + const obj = structure1[parameter.objectTypeField][0]; + await driver.query(conn, obj.createSql, { discardResult: true }); + + const structure2 = await driver.analyseFull(conn); + const parameters = structure2[parameter.objectTypeField][0].parameters; + + expect(parameters.length).toEqual(parameter.list.length); + for (let i = 0; i < parameters.length; i += 1) { + expect(parameters[i]).toEqual(expect.objectContaining(parameter.list[i])); + } + }) + ); }); diff --git a/integration-tests/engines.js b/integration-tests/engines.js index 991a1e17f..70ae9fc41 100644 --- a/integration-tests/engines.js +++ b/integration-tests/engines.js @@ -41,6 +41,7 @@ const engines = [ { testName: 'simple', create: 'CREATE PROCEDURE obj1(a int) BEGIN SELECT * FROM t1; END', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -53,6 +54,7 @@ const engines = [ { testName: 'paramTypes', create: 'CREATE PROCEDURE obj1(a int, b varchar(50), c numeric(10,2)) BEGIN SELECT * FROM t1; END', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -75,6 +77,7 @@ const engines = [ { testName: 'paramModes', create: 'CREATE PROCEDURE obj1(IN a int, OUT b int, INOUT c int) BEGIN SELECT * FROM t1; END', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -93,8 +96,8 @@ const engines = [ dataType: 'int', }, ], - } - ] + }, + ], }, { label: 'MariaDB', @@ -168,6 +171,7 @@ const engines = [ { testName: 'simple', create: 'CREATE PROCEDURE obj1(a integer) LANGUAGE SQL AS $$ select * from t1 $$', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -181,6 +185,7 @@ const engines = [ testName: 'dataTypes', create: 'CREATE PROCEDURE obj1(a integer, b varchar(20), c numeric(18,2)) LANGUAGE SQL AS $$ select * from t1 $$', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -203,6 +208,7 @@ const engines = [ { testName: 'paramModes', create: 'CREATE PROCEDURE obj1(IN a integer, INOUT b integer) LANGUAGE SQL AS $$ select * from t1 $$', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -232,6 +238,7 @@ begin into min_len, max_len from t1; end;$$`, + drop: 'DROP FUNCTION obj1', list: [ { parameterName: 'min_len', @@ -274,6 +281,7 @@ end;$$`, { testName: 'simple', create: 'CREATE PROCEDURE obj1 (@param1 int) AS SELECT id from t1', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -286,6 +294,7 @@ end;$$`, { testName: 'dataTypes', create: 'CREATE PROCEDURE obj1 (@p1 bit, @p2 nvarchar(20), @p3 decimal(18,2), @p4 float) AS SELECT id from t1', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -313,6 +322,7 @@ end;$$`, { testName: 'outputParam', create: 'CREATE PROCEDURE obj1 (@p1 int OUTPUT) AS SELECT id from t1', + drop: 'DROP PROCEDURE obj1', objectTypeField: 'procedures', list: [ { @@ -382,10 +392,10 @@ end;$$`, const filterLocal = [ // filter local testing - 'MySQL', + '-MySQL', '-MariaDB', '-PostgreSQL', - '-SQL Server', + 'SQL Server', '-SQLite', '-CockroachDB', '-ClickHouse',