Skip to content

Commit 3a45833

Browse files
refactor quicksight test resources as fixtures (#1928)
1 parent 614ec6b commit 3a45833

File tree

2 files changed

+39
-22
lines changed

2 files changed

+39
-22
lines changed

tests/conftest.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import uuid
23
from datetime import datetime
34
from importlib import reload
45
from types import ModuleType
@@ -242,6 +243,26 @@ def glue_table2(glue_database) -> str:
242243
wr.catalog.delete_table_if_exists(database=glue_database, table=name)
243244

244245

246+
@pytest.fixture(scope="function")
247+
def quicksight_datasource() -> str:
248+
name = f"test{str(uuid.uuid4())[:8]}"
249+
print(f"Quicksight Data Source: {name}")
250+
wr.quicksight.delete_all_data_sources(regex_filter=name)
251+
yield name
252+
wr.quicksight.delete_all_data_sources(regex_filter=name)
253+
print(f"Quicksight Data Source: {name} deleted")
254+
255+
256+
@pytest.fixture(scope="function")
257+
def quicksight_dataset() -> str:
258+
name = f"test{str(uuid.uuid4())[:8]}"
259+
print(f"Quicksight Dataset: {name}")
260+
wr.quicksight.delete_all_datasets(regex_filter=name)
261+
yield name
262+
wr.quicksight.delete_all_datasets(regex_filter=name)
263+
print(f"Quicksight Dataset: {name} deleted")
264+
265+
245266
@pytest.fixture(scope="function")
246267
def path(bucket):
247268
yield from path_generator(bucket)

tests/test_quicksight.py

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,30 @@
1414

1515

1616
@pytest.mark.xfail(raises=client.exceptions.ConflictException)
17-
def test_quicksight(path, glue_database, glue_table):
17+
def test_quicksight(path, quicksight_datasource, quicksight_dataset, glue_database, glue_table):
1818
df = get_df_quicksight()
1919
wr.s3.to_parquet(
2020
df=df, path=path, dataset=True, database=glue_database, table=glue_table, partition_cols=["par0", "par1"]
2121
)
22-
resource_name = f"test{str(uuid.uuid4())[:8]}"
23-
24-
wr.quicksight.delete_all_dashboards(regex_filter="test.*")
25-
wr.quicksight.delete_all_datasets(regex_filter="test.*")
26-
wr.quicksight.delete_all_data_sources(regex_filter="test.*")
27-
wr.quicksight.delete_all_templates(regex_filter="test.*")
2822

2923
wr.quicksight.create_athena_data_source(
30-
name=resource_name, allowed_to_manage=[wr.sts.get_current_identity_name()], tags={"Env": "aws-sdk-pandas"}
24+
name=quicksight_datasource,
25+
allowed_to_manage=[wr.sts.get_current_identity_name()],
26+
tags={"Env": "aws-sdk-pandas"},
3127
)
32-
assert wr.quicksight.describe_data_source(resource_name)["Name"] == resource_name
28+
assert wr.quicksight.describe_data_source(quicksight_datasource)["Name"] == quicksight_datasource
3329
assert (
34-
wr.quicksight.describe_data_source_permissions(resource_name)[0]["Principal"].endswith(
30+
wr.quicksight.describe_data_source_permissions(quicksight_datasource)[0]["Principal"].endswith(
3531
wr.sts.get_current_identity_name()
3632
)
3733
is True
3834
)
39-
dataset_name = f"{resource_name}-table"
35+
dataset_name = f"{quicksight_dataset}-table"
4036
wr.quicksight.create_athena_dataset(
4137
name=dataset_name,
4238
database=glue_database,
4339
table=glue_table,
44-
data_source_name=resource_name,
40+
data_source_name=quicksight_datasource,
4541
allowed_to_manage=[wr.sts.get_current_identity_name()],
4642
rename_columns={"iint16": "new_col"},
4743
cast_columns_types={"new_col": "STRING"},
@@ -50,9 +46,9 @@ def test_quicksight(path, glue_database, glue_table):
5046
assert wr.quicksight.describe_dataset(dataset_name)["Name"] == dataset_name
5147

5248
wr.quicksight.create_athena_dataset(
53-
name=f"{resource_name}-sql",
49+
name=f"{quicksight_dataset}-sql",
5450
sql=f"SELECT * FROM {glue_database}.{glue_table}",
55-
data_source_name=resource_name,
51+
data_source_name=quicksight_datasource,
5652
import_mode="SPICE",
5753
allowed_to_use=[wr.sts.get_current_identity_name()],
5854
allowed_to_manage=[wr.sts.get_current_identity_name()],
@@ -62,26 +58,26 @@ def test_quicksight(path, glue_database, glue_table):
6258
tags={"foo": "boo"},
6359
)
6460

65-
ingestion_id = wr.quicksight.create_ingestion(f"{resource_name}-sql")
61+
ingestion_id = wr.quicksight.create_ingestion(f"{quicksight_dataset}-sql")
6662
status = None
6763
while status not in ["FAILED", "COMPLETED", "CANCELLED"]:
68-
status = wr.quicksight.describe_ingestion(ingestion_id, f"{resource_name}-sql")["IngestionStatus"]
64+
status = wr.quicksight.describe_ingestion(ingestion_id, f"{quicksight_dataset}-sql")["IngestionStatus"]
6965
assert status == "COMPLETED"
7066

71-
ingestion_id = wr.quicksight.create_ingestion(f"{resource_name}-sql")
72-
wr.quicksight.cancel_ingestion(ingestion_id, f"{resource_name}-sql")
73-
assert len(wr.quicksight.list_ingestions(f"{resource_name}-sql")) == 3
67+
ingestion_id = wr.quicksight.create_ingestion(f"{quicksight_dataset}-sql")
68+
wr.quicksight.cancel_ingestion(ingestion_id, f"{quicksight_dataset}-sql")
69+
assert len(wr.quicksight.list_ingestions(f"{quicksight_dataset}-sql")) == 3
7470

7571
wr.quicksight.list_groups()
7672
wr.quicksight.list_iam_policy_assignments()
7773
wr.quicksight.list_iam_policy_assignments_for_user(wr.sts.get_current_identity_name())
7874
wr.quicksight.list_user_groups(wr.sts.get_current_identity_name())
7975
wr.quicksight.list_users()
80-
wr.quicksight.get_dataset_ids(f"{resource_name}-sql")
76+
wr.quicksight.get_dataset_ids(f"{quicksight_dataset}-sql")
8177
wr.quicksight.get_data_source_ids("test")
8278

83-
wr.quicksight.delete_all_datasets(regex_filter="test.*")
84-
wr.quicksight.delete_all_data_sources(regex_filter="test.*")
79+
wr.quicksight.delete_all_datasets(regex_filter=quicksight_dataset)
80+
wr.quicksight.delete_all_data_sources(regex_filter=quicksight_datasource)
8581

8682

8783
def test_quicksight_delete_all_datasources_filter():

0 commit comments

Comments
 (0)