diff --git a/sqldev/pom.xml b/sqldev/pom.xml index 41261000..c688b6e7 100644 --- a/sqldev/pom.xml +++ b/sqldev/pom.xml @@ -5,7 +5,7 @@ org.utplsql org.utplsql.sqldev - 0.7.0 + 0.7.1 bundle UTF-8 diff --git a/sqldev/src/main/java/org/utplsql/sqldev/dal/UtplsqlDao.xtend b/sqldev/src/main/java/org/utplsql/sqldev/dal/UtplsqlDao.xtend index e7a12a50..941d3f85 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/dal/UtplsqlDao.xtend +++ b/sqldev/src/main/java/org/utplsql/sqldev/dal/UtplsqlDao.xtend @@ -179,7 +179,7 @@ class UtplsqlDao { val sql = ''' SELECT count(*) FROM TABLE(ut_runner.get_suites_info(upper(?), upper(?))) - WHERE item_type = 'UT_TEST' + WHERE item_type IN ('UT_TEST', 'UT_SUITE') AND (item_name = upper(?) or ? IS NULL) ''' found = jdbcTemplate.queryForObject(sql, Integer, #[owner, objectName, subobjectName, subobjectName]) @@ -388,6 +388,14 @@ class UtplsqlDao { SELECT object_owner, object_name, path AS suitepath, + count( + CASE + WHEN item_type = 'UT_TEST' THEN + 1 + ELSE + NULL + END + ) over (partition by object_owner, object_name) AS test_count, item_type, item_name, item_description @@ -416,7 +424,7 @@ class UtplsqlDao { 'Yes' AS multiselectable, 'Yes' AS relevant FROM test - WHERE item_type = 'UT_TEST' + WHERE item_type IN ('UT_TEST', 'UT_SUITE') UNION ALL SELECT object_owner || '.' || object_name AS parent_id, object_owner || '.' || object_name || '.' || item_name AS id, @@ -451,10 +459,10 @@ class UtplsqlDao { object_owner || ':' || suitepath AS id, item_name AS name, item_description AS description, - CASE item_type - WHEN 'UT_SUITE' THEN + CASE + WHEN item_type = 'UT_SUITE' AND test_count > 0 THEN 'PACKAGE_ICON' - WHEN 'UT_TEST' THEN + WHEN item_type = 'UT_TEST' THEN 'PROCEDURE_ICON' ELSE 'FOLDER_ICON' @@ -492,7 +500,7 @@ class UtplsqlDao { lower(a.name) AS name, a.text, a.subobject_name - FROM table(ut3.ut_annotation_manager.get_annotated_objects(user, 'PACKAGE')) o + FROM table(«utplsqlSchema».ut_annotation_manager.get_annotated_objects(user, 'PACKAGE')) o CROSS JOIN table(o.annotations) a WHERE lower(a.name) in ('suite', 'suitepath', 'endcontext', 'test') OR lower(a.name) = 'context' AND regexp_like(text, '(\w+)(\.\w+)*') diff --git a/sqldev/src/test/java/org/utplsql/sqldev/tests/DalTest.xtend b/sqldev/src/test/java/org/utplsql/sqldev/tests/DalTest.xtend index 9dbad90b..19699259 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/tests/DalTest.xtend +++ b/sqldev/src/test/java/org/utplsql/sqldev/tests/DalTest.xtend @@ -328,7 +328,7 @@ class DalTest extends AbstractJdbcTest { PROCEDURE t3; END junit_utplsql_test_pkg; ''') - val actualNodes = dao.runnables() + val actualNodes = dao.runnables() Assert.assertEquals(16, actualNodes.size) val actual = new HashMap for (node : actualNodes) { @@ -472,4 +472,69 @@ class DalTest extends AbstractJdbcTest { } + @Test + def void issue54FolderIconForSuitesWithoutTests() { + setupAndTeardown + jdbcTemplate.execute(''' + CREATE OR REPLACE PACKAGE junit_utplsql_test_pkg IS + -- %suite + + END junit_utplsql_test_pkg; + ''') + val dao = new UtplsqlDao(dataSource.connection) + val actualNodes = dao.runnables() + Assert.assertEquals(4, actualNodes.size) + val pkg = actualNodes.findFirst[it.id == "SCOTT:junit_utplsql_test_pkg"] + Assert.assertEquals("FOLDER_ICON", pkg.iconName) + jdbcTemplate.execute("DROP PACKAGE junit_utplsql_test_pkg") + } + + @Test + def void issue54PackageIconForSuitesWithTests() { + setupAndTeardown + jdbcTemplate.execute(''' + CREATE OR REPLACE PACKAGE junit_utplsql_test_pkg IS + -- %suite + + -- %test + PROCEDURE t1; + + END junit_utplsql_test_pkg; + ''') + val dao = new UtplsqlDao(dataSource.connection) + val actualNodes = dao.runnables() + Assert.assertEquals(6, actualNodes.size) + val pkg = actualNodes.findFirst[it.id == "SCOTT:junit_utplsql_test_pkg"] + Assert.assertEquals("PACKAGE_ICON", pkg.iconName) + jdbcTemplate.execute("DROP PACKAGE junit_utplsql_test_pkg") + } + + @Test + def void issue55SuiteWithoutTests() { + setupAndTeardown + jdbcTemplate.execute(''' + CREATE OR REPLACE PACKAGE junit_utplsql_test_pkg IS + -- %suite + + END junit_utplsql_test_pkg; + ''') + val dao = new UtplsqlDao(dataSource.connection) + val actualNodes = dao.runnables() + Assert.assertEquals(4, actualNodes.size) + jdbcTemplate.execute("DROP PACKAGE junit_utplsql_test_pkg") + } + + @Test + def void issue56SuiteWithoutTests() { + jdbcTemplate.execute(''' + CREATE OR REPLACE PACKAGE junit_utplsql_test_pkg IS + -- %suite + + END junit_utplsql_test_pkg; + ''') + val dao = new UtplsqlDao(dataSource.connection) + Assert.assertTrue(dao.containsUtplsqlTest("scott", "junit_utplsql_test_pkg")) + jdbcTemplate.execute("DROP PACKAGE junit_utplsql_test_pkg") + } + } \ No newline at end of file