From cdb22f4dfdf258efb230730bad4936e7079ab4d5 Mon Sep 17 00:00:00 2001 From: Raushan Kumar Gupta Date: Wed, 25 Sep 2024 19:45:57 +0530 Subject: [PATCH] fix: mongo schema collections order of mongo plugin (#36062) ### PR Description: - **File changes in the PR**: - Integrated the sorting feature to the mongo collections. - Added the unit test for sorting. Fixes https://github.com/appsmithorg/appsmith/issues/35842 - **Snapshots**: **Before resolving bug:** ![image](https://github.com/user-attachments/assets/34c04ebc-e81b-480c-9a54-1b643b68ffb2) **After resolving bug:** ![image](https://github.com/user-attachments/assets/fd7155e1-e261-491a-b912-7d482b8a9386) ## Summary by CodeRabbit - **New Features** - Enhanced the MongoDB plugin to return collection names in a case-insensitive sorted order, improving predictability and user experience. - **Tests** - Added a new test to validate that collections returned by the plugin are sorted correctly, ensuring consistent functionality. --- .../com/external/plugins/MongoPlugin.java | 1 + .../plugins/MongoPluginQueriesTest.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java b/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java index 060758fe193..0eac9e46c32 100644 --- a/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java +++ b/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java @@ -964,6 +964,7 @@ public Mono getStructure( } return true; }) + .sort((collectionName1, collectionName2) -> collectionName1.compareToIgnoreCase(collectionName2)) .flatMap(collectionName -> { final ArrayList columns = new ArrayList<>(); final ArrayList templates = new ArrayList<>(); diff --git a/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginQueriesTest.java b/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginQueriesTest.java index b221ac9e5ce..1ecb60056ca 100644 --- a/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginQueriesTest.java +++ b/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginQueriesTest.java @@ -655,6 +655,26 @@ public void testStructure() { .verifyComplete(); } + @Test + public void testStructure_should_return_collections_in_order() { + DatasourceConfiguration dsConfig = createDatasourceConfiguration(); + Mono structureMono = pluginExecutor + .datasourceCreate(dsConfig) + .flatMap(connection -> pluginExecutor.getStructure(connection, dsConfig, null)); + + StepVerifier.create(structureMono) + .assertNext(structure -> { + assertNotNull(structure); + assertEquals(3, structure.getTables().size()); + + // Check that the tables are sorted in ascending order + assertEquals("address", structure.getTables().get(0).getName()); + assertEquals("teams", structure.getTables().get(1).getName()); + assertEquals("users", structure.getTables().get(2).getName()); + }) + .verifyComplete(); + } + @Test public void testCountCommand() { DatasourceConfiguration dsConfig = createDatasourceConfiguration();