@@ -69,14 +69,15 @@ def test_ruleset_dqdl(df, path, glue_database, glue_table, glue_ruleset, glue_da
6969 assert df_results ["Result" ].eq ("PASS" ).all ()
7070
7171
72- def test_recommendation_ruleset (df , path , glue_database , glue_table , glue_ruleset , glue_data_quality_role ):
72+ @pytest .mark .parametrize ("name" , [False , True ])
73+ def test_recommendation_ruleset (df , path , name , glue_database , glue_table , glue_ruleset , glue_data_quality_role ):
7374 df_recommended_ruleset = wr .data_quality .create_recommendation_ruleset (
75+ name = f"{ glue_ruleset } _recommended" if name else None ,
7476 database = glue_database ,
7577 table = glue_table ,
7678 iam_role_arn = glue_data_quality_role ,
7779 number_of_workers = 2 ,
7880 )
79- print (glue_data_quality_role )
8081 df_rules = df_recommended_ruleset .append (
8182 {"rule_type" : "ColumnValues" , "parameter" : '"c2"' , "expression" : "in [0, 1, 2]" }, ignore_index = True
8283 )
@@ -90,11 +91,12 @@ def test_recommendation_ruleset(df, path, glue_database, glue_table, glue_rulese
9091 name = glue_ruleset ,
9192 iam_role_arn = glue_data_quality_role ,
9293 number_of_workers = 2 ,
94+ additional_run_options = {"CloudWatchMetricsEnabled" : False },
9395 )
9496 assert df_results ["Result" ].eq ("PASS" ).all ()
9597
9698
97- def test_ruleset_fail (df , path , glue_database , glue_table , glue_ruleset , glue_data_quality_role ):
99+ def test_ruleset_fail (df , path , glue_database , glue_table , glue_ruleset , glue_data_quality_role , account_id ):
98100 wr .data_quality .create_ruleset (
99101 name = glue_ruleset ,
100102 database = glue_database ,
@@ -105,6 +107,7 @@ def test_ruleset_fail(df, path, glue_database, glue_table, glue_ruleset, glue_da
105107 name = glue_ruleset ,
106108 iam_role_arn = glue_data_quality_role ,
107109 number_of_workers = 2 ,
110+ catalog_id = account_id ,
108111 )
109112 assert df_results ["Result" ][0 ] == "FAIL"
110113
@@ -135,6 +138,13 @@ def test_create_ruleset_already_exists(
135138 glue_table : str ,
136139 glue_ruleset : str ,
137140) -> None :
141+ with pytest .raises (wr .exceptions .InvalidArgumentCombination ):
142+ wr .data_quality .create_ruleset (
143+ name = glue_ruleset ,
144+ database = glue_database ,
145+ table = glue_table ,
146+ )
147+
138148 wr .data_quality .create_ruleset (
139149 name = glue_ruleset ,
140150 database = glue_database ,
@@ -182,7 +192,7 @@ def test_update_ruleset(df: pd.DataFrame, glue_database: str, glue_table: str, g
182192 assert df_rules .equals (df_ruleset )
183193
184194
185- def test_update_ruleset_does_not_exists (df : pd .DataFrame , glue_ruleset : str ) -> None :
195+ def test_update_ruleset_exceptions (df : pd .DataFrame , glue_ruleset : str ) -> None :
186196 df_rules = pd .DataFrame (
187197 {
188198 "rule_type" : ["RowCount" ],
@@ -198,6 +208,12 @@ def test_update_ruleset_does_not_exists(df: pd.DataFrame, glue_ruleset: str) ->
198208 df_rules = df_rules ,
199209 )
200210
211+ with pytest .raises (wr .exceptions .InvalidArgumentValue ):
212+ wr .data_quality .update_ruleset (name = glue_ruleset , df_rules = df_rules , mode = "append" )
213+
214+ with pytest .raises (wr .exceptions .InvalidArgumentCombination ):
215+ wr .data_quality .update_ruleset (name = glue_ruleset )
216+
201217
202218def test_upsert_ruleset (df : pd .DataFrame , glue_database : str , glue_table : str , glue_ruleset : str ) -> None :
203219 df_rules = pd .DataFrame (
@@ -222,15 +238,13 @@ def test_upsert_ruleset(df: pd.DataFrame, glue_database: str, glue_table: str, g
222238 }
223239 )
224240
225- new_glue_ruleset_name = f"{ glue_ruleset } 2.0"
226241 wr .data_quality .update_ruleset (
227242 name = glue_ruleset ,
228- updated_name = new_glue_ruleset_name ,
229243 mode = "upsert" ,
230244 df_rules = df_upsert ,
231245 )
232246
233- df_ruleset = wr .data_quality .get_ruleset (name = new_glue_ruleset_name )
247+ df_ruleset = wr .data_quality .get_ruleset (name = glue_ruleset )
234248
235249 assert df_ruleset .shape == (5 , 3 )
236250 row_count = df_ruleset .loc [df_ruleset ["rule_type" ] == "RowCount" ]
0 commit comments