Skip to content

Commit 5b24cea

Browse files
FastLeenfx
andauthored
Verify query metadata for assessment dashboards during unit tests (#294)
Created a Unit Test to Dashboards to avoid install failures. Closes issue #278 --------- Co-authored-by: Serge Smertin <[email protected]>
1 parent c3c2295 commit 5b24cea

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import io
2+
3+
import yaml
4+
from databricks.sdk.service import iam
5+
from databricks.sdk.service.sql import (
6+
Dashboard,
7+
DataSource,
8+
Query,
9+
Visualization,
10+
Widget,
11+
)
12+
13+
from databricks.labs.ucx.config import GroupsConfig, WorkspaceConfig
14+
from databricks.labs.ucx.framework.dashboards import DashboardFromFiles
15+
from databricks.labs.ucx.install import WorkspaceInstaller
16+
17+
18+
def test_dashboard(mocker):
19+
ws = mocker.Mock()
20+
ws.current_user.me = lambda: iam.User(user_name="[email protected]", groups=[iam.ComplexValue(display="admins")])
21+
ws.config.host = "https://foo"
22+
ws.config.is_aws = True
23+
config_bytes = yaml.dump(WorkspaceConfig(inventory_database="a", groups=GroupsConfig(auto=True)).as_dict()).encode(
24+
"utf8"
25+
)
26+
ws.workspace.download = lambda _: io.BytesIO(config_bytes)
27+
ws.data_sources.list = lambda: [DataSource(id="bcd", warehouse_id="000000")]
28+
ws.dashboards.create.return_value = Dashboard(id="abc")
29+
ws.queries.create.return_value = Query(id="abc")
30+
ws.query_visualizations.create.return_value = Visualization(id="abc")
31+
ws.dashboard_widgets.create.return_value = Widget(id="abc")
32+
installer = WorkspaceInstaller(ws)
33+
local_query_files = installer._find_project_root() / "src/databricks/labs/ucx/assessment/queries"
34+
dash = DashboardFromFiles(
35+
ws,
36+
local_folder=local_query_files,
37+
remote_folder="/users/not_a_real_user/queries",
38+
name="Assessment",
39+
warehouse_id="000000",
40+
query_text_callback=installer._replace_inventory_variable,
41+
)
42+
dashboard = dash.create_dashboard()
43+
assert dashboard is not None
44+
assert dashboard == "abc"

0 commit comments

Comments
 (0)