diff --git a/superset/db_engine_specs/gsheets.py b/superset/db_engine_specs/gsheets.py index fa5245f9c48cb..8e2db1224e827 100644 --- a/superset/db_engine_specs/gsheets.py +++ b/superset/db_engine_specs/gsheets.py @@ -60,6 +60,7 @@ class GSheetsParametersType(TypedDict): class GSheetsPropertiesType(TypedDict): parameters: GSheetsParametersType + catalog: Dict[str, str] class GSheetsEngineSpec(SqliteEngineSpec): diff --git a/tests/unit_tests/db_engine_specs/test_gsheets.py b/tests/unit_tests/db_engine_specs/test_gsheets.py index 487e1eff695f8..b456d0010e2e8 100644 --- a/tests/unit_tests/db_engine_specs/test_gsheets.py +++ b/tests/unit_tests/db_engine_specs/test_gsheets.py @@ -40,7 +40,29 @@ def test_validate_parameters_simple() -> None: "parameters": { "service_account_info": "", "catalog": {}, - } + }, + "catalog": {}, + } + errors = GSheetsEngineSpec.validate_parameters(properties) + assert errors == [ + SupersetError( + message="Sheet name is required", + error_type=SupersetErrorType.CONNECTION_MISSING_PARAMETERS_ERROR, + level=ErrorLevel.WARNING, + extra={"catalog": {"idx": 0, "name": True}}, + ), + ] + + +def test_validate_parameters_simple_with_in_root_catalog() -> None: + from superset.db_engine_specs.gsheets import ( + GSheetsEngineSpec, + GSheetsPropertiesType, + ) + + properties: GSheetsPropertiesType = { + "properties": {}, + "catalog": {}, } errors = GSheetsEngineSpec.validate_parameters(properties) assert errors == [ @@ -76,12 +98,12 @@ def test_validate_parameters_catalog( properties: GSheetsPropertiesType = { "parameters": { "service_account_info": "", - "catalog": { - "private_sheet": "https://docs.google.com/spreadsheets/d/1/edit", - "public_sheet": "https://docs.google.com/spreadsheets/d/1/edit#gid=1", - "not_a_sheet": "https://www.google.com/", - }, - } + }, + "catalog": { + "private_sheet": "https://docs.google.com/spreadsheets/d/1/edit", + "public_sheet": "https://docs.google.com/spreadsheets/d/1/edit#gid=1", + "not_a_sheet": "https://www.google.com/", + }, } errors = GSheetsEngineSpec.validate_parameters(properties) # ignore: type @@ -168,12 +190,12 @@ def test_validate_parameters_catalog_and_credentials( properties: GSheetsPropertiesType = { "parameters": { "service_account_info": "", - "catalog": { - "private_sheet": "https://docs.google.com/spreadsheets/d/1/edit", - "public_sheet": "https://docs.google.com/spreadsheets/d/1/edit#gid=1", - "not_a_sheet": "https://www.google.com/", - }, - } + }, + "catalog": { + "private_sheet": "https://docs.google.com/spreadsheets/d/1/edit", + "public_sheet": "https://docs.google.com/spreadsheets/d/1/edit#gid=1", + "not_a_sheet": "https://www.google.com/", + }, } errors = GSheetsEngineSpec.validate_parameters(properties) # ignore: type assert errors == [