Skip to content

Commit 3c3d032

Browse files
authored
test(ingest/tableau): add test for extract_project_hierarchy scenario (#12079)
1 parent 98c056d commit 3c3d032

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

metadata-ingestion/tests/integration/tableau/test_tableau_ingest.py

+77
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from datahub.ingestion.source.tableau import tableau_constant as c
2828
from datahub.ingestion.source.tableau.tableau import (
2929
TableauConfig,
30+
TableauProject,
3031
TableauSiteSource,
3132
TableauSource,
3233
TableauSourceReport,
@@ -1342,6 +1343,82 @@ def test_permission_warning(pytestconfig, tmp_path, mock_datahub_graph):
13421343

13431344

13441345
@freeze_time(FROZEN_TIME)
1346+
@pytest.mark.parametrize(
1347+
"extract_project_hierarchy, allowed_projects",
1348+
[
1349+
(True, ["project1", "project4", "project3"]),
1350+
(False, ["project1", "project4"]),
1351+
],
1352+
)
1353+
def test_extract_project_hierarchy(extract_project_hierarchy, allowed_projects):
1354+
context = PipelineContext(run_id="0", pipeline_name="test_tableau")
1355+
1356+
config_dict = config_source_default.copy()
1357+
1358+
del config_dict["stateful_ingestion"]
1359+
del config_dict["projects"]
1360+
1361+
config_dict["project_pattern"] = {
1362+
"allow": ["project1", "project4"],
1363+
"deny": ["project2"],
1364+
}
1365+
1366+
config_dict["extract_project_hierarchy"] = extract_project_hierarchy
1367+
1368+
config = TableauConfig.parse_obj(config_dict)
1369+
1370+
site_source = TableauSiteSource(
1371+
config=config,
1372+
ctx=context,
1373+
platform="tableau",
1374+
site=SiteItem(name="Site 1", content_url="site1"),
1375+
site_id="site1",
1376+
report=TableauSourceReport(),
1377+
server=Server("https://test-tableau-server.com"),
1378+
)
1379+
1380+
all_project_map: Dict[str, TableauProject] = {
1381+
"p1": TableauProject(
1382+
id="1",
1383+
name="project1",
1384+
path=[],
1385+
parent_id=None,
1386+
parent_name=None,
1387+
description=None,
1388+
),
1389+
"p2": TableauProject(
1390+
id="2",
1391+
name="project2",
1392+
path=[],
1393+
parent_id="1",
1394+
parent_name="project1",
1395+
description=None,
1396+
),
1397+
"p3": TableauProject(
1398+
id="3",
1399+
name="project3",
1400+
path=[],
1401+
parent_id="1",
1402+
parent_name="project1",
1403+
description=None,
1404+
),
1405+
"p4": TableauProject(
1406+
id="4",
1407+
name="project4",
1408+
path=[],
1409+
parent_id=None,
1410+
parent_name=None,
1411+
description=None,
1412+
),
1413+
}
1414+
1415+
site_source._init_tableau_project_registry(all_project_map)
1416+
1417+
assert allowed_projects == [
1418+
project.name for project in site_source.tableau_project_registry.values()
1419+
]
1420+
1421+
13451422
@pytest.mark.integration
13461423
def test_connection_report_test(requests_mock):
13471424
server_info_response = """

0 commit comments

Comments
 (0)