Skip to content

Commit c1324fa

Browse files
committed
fix(gooddata-sdk): address review feedback
1 parent 08ebaed commit c1324fa

1 file changed

Lines changed: 91 additions & 0 deletions

File tree

packages/gooddata-sdk/tests/catalog/test_catalog_ai_lake.py

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,29 @@
11
# (C) 2026 GoodData Corporation
22
from __future__ import annotations
33

4+
from pathlib import Path
5+
46
from gooddata_sdk import (
57
CatalogCreatePipeTableRequest,
68
CatalogDatabaseInstance,
79
CatalogPipeTable,
810
CatalogPipeTableSummary,
911
CatalogProvisionDatabaseInstanceRequest,
1012
CatalogServiceInfo,
13+
GoodDataSdk,
1114
)
1215
from gooddata_sdk.catalog.data_source.entity_model.data_source import CatalogDataSourceAiLakehouse
16+
from tests_support.vcrpy_utils import get_vcr
17+
18+
from .conftest import safe_delete
19+
20+
gd_vcr = get_vcr()
21+
22+
_current_dir = Path(__file__).parent.absolute()
23+
_fixtures_dir = _current_dir / "fixtures" / "ai_lake"
24+
25+
_TEST_INSTANCE_ID = "test-instance"
26+
_TEST_TABLE_NAME = "test_pipe_table"
1327

1428

1529
class TestCatalogDatabaseInstance:
@@ -142,3 +156,80 @@ def test_ailakehouse_type(self):
142156
)
143157
assert ds.type == "AILAKEHOUSE"
144158
assert ds.schema == ""
159+
160+
161+
# ---------------------------------------------------------------------------
162+
# Integration tests — cassettes recorded against a live GoodData backend.
163+
# Run with OVERWRITE=1 to record; subsequent runs replay from cassette.
164+
# ---------------------------------------------------------------------------
165+
166+
167+
@gd_vcr.use_cassette(str(_fixtures_dir / "list_database_instances.yaml"))
168+
def test_list_database_instances(test_config):
169+
sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"])
170+
instances = sdk.catalog_ai_lake.list_database_instances()
171+
assert isinstance(instances, list)
172+
for instance in instances:
173+
assert isinstance(instance, CatalogDatabaseInstance)
174+
assert instance.id
175+
assert instance.name
176+
177+
178+
@gd_vcr.use_cassette(str(_fixtures_dir / "provision_get_deprovision_database_instance.yaml"))
179+
def test_provision_get_deprovision_database_instance(test_config):
180+
sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"])
181+
request = CatalogProvisionDatabaseInstanceRequest(name=_TEST_INSTANCE_ID)
182+
try:
183+
sdk.catalog_ai_lake.provision_database_instance(request)
184+
instance = sdk.catalog_ai_lake.get_database_instance(_TEST_INSTANCE_ID)
185+
assert isinstance(instance, CatalogDatabaseInstance)
186+
assert instance.name == _TEST_INSTANCE_ID
187+
finally:
188+
safe_delete(sdk.catalog_ai_lake.deprovision_database_instance, _TEST_INSTANCE_ID)
189+
190+
191+
@gd_vcr.use_cassette(str(_fixtures_dir / "list_pipe_tables.yaml"))
192+
def test_list_pipe_tables(test_config):
193+
sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"])
194+
instances = sdk.catalog_ai_lake.list_database_instances()
195+
if not instances:
196+
return
197+
instance_id = instances[0].id
198+
pipe_tables = sdk.catalog_ai_lake.list_pipe_tables(instance_id)
199+
assert isinstance(pipe_tables, list)
200+
for pt in pipe_tables:
201+
assert isinstance(pt, CatalogPipeTableSummary)
202+
assert pt.table_name
203+
204+
205+
@gd_vcr.use_cassette(str(_fixtures_dir / "create_get_delete_pipe_table.yaml"))
206+
def test_create_get_delete_pipe_table(test_config):
207+
sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"])
208+
instances = sdk.catalog_ai_lake.list_database_instances()
209+
assert instances, "Need at least one database instance to test pipe table operations"
210+
instance_id = instances[0].id
211+
request = CatalogCreatePipeTableRequest(
212+
path_prefix="test/data/",
213+
source_storage_name="test-storage",
214+
table_name=_TEST_TABLE_NAME,
215+
)
216+
try:
217+
sdk.catalog_ai_lake.create_pipe_table(instance_id, request)
218+
table = sdk.catalog_ai_lake.get_pipe_table(instance_id, _TEST_TABLE_NAME)
219+
assert isinstance(table, CatalogPipeTable)
220+
assert table.table_name == _TEST_TABLE_NAME
221+
pipe_tables = sdk.catalog_ai_lake.list_pipe_tables(instance_id)
222+
table_names = [pt.table_name for pt in pipe_tables]
223+
assert _TEST_TABLE_NAME in table_names
224+
finally:
225+
safe_delete(sdk.catalog_ai_lake.delete_pipe_table, instance_id, _TEST_TABLE_NAME)
226+
227+
228+
@gd_vcr.use_cassette(str(_fixtures_dir / "list_services.yaml"))
229+
def test_list_services(test_config):
230+
sdk = GoodDataSdk.create(host_=test_config["host"], token_=test_config["token"])
231+
services = sdk.catalog_ai_lake.list_services()
232+
assert isinstance(services, list)
233+
for svc in services:
234+
assert isinstance(svc, CatalogServiceInfo)
235+
assert svc.name

0 commit comments

Comments
 (0)