3
3
4
4
# COMMAND ----------
5
5
6
- @TestHelper .monkey_patch
6
+ @ValidationHelper .monkey_patch
7
7
def validate_1_1 (self , df ):
8
8
suite = DA .tests .new ("5.1a-1.1" )
9
9
10
- suite .test_true (df .isStreaming , description = "The query is streaming" )
10
+ suite .test_true (actual_value = lambda : df .isStreaming , description = "The query is streaming" )
11
11
12
12
columns = ['order_id' , 'email' , 'transaction_timestamp' , 'total_item_quantity' , 'purchase_revenue_in_usd' , 'unique_items' , 'items' ]
13
- suite .test_sequence (actual_value = df .columns ,
13
+ suite .test_sequence (actual_value = lambda : df .columns ,
14
14
expected_value = columns ,
15
15
test_column_order = False ,
16
16
description = f"DataFrame contains all { len (columns )} columns" ,
@@ -21,44 +21,53 @@ def validate_1_1(self, df):
21
21
22
22
# COMMAND ----------
23
23
24
- @TestHelper .monkey_patch
25
- def validate_2_1 (self , schema :StructType ):
26
-
24
+ @ValidationHelper .monkey_patch
25
+ def validate_2_1 (self , schema : StructType ):
26
+
27
27
suite = DA .tests .new ("5.1a-2.1" )
28
-
29
- suite .test_equals (actual_value = type (schema ), expected_value = StructType , description = "Schema is of type StructType" , hint = "Found [[ACTUAL_VALUE]]" )
30
-
31
- suite .test_length (schema .fieldNames (), 7 , description = "Schema contians seven fields" , hint = "Found [[LEN_ACTUAL_VALUE]]: [[ACTUAL_VALUE]]" )
32
-
33
- suite .test_struct_field (schema , "order_id" , "LongType" , None )
34
- suite .test_struct_field (schema , "email" , "StringType" , None )
35
- suite .test_struct_field (schema , "transaction_timestamp" , "LongType" , None )
36
- suite .test_struct_field (schema , "total_item_quantity" , "LongType" , None )
37
- suite .test_struct_field (schema , "purchase_revenue_in_usd" , "DoubleType" , None )
38
- suite .test_struct_field (schema , "unique_items" , "LongType" , None )
39
- suite .test_struct_field (schema , "items" , "StructType" , None )
40
-
28
+
29
+ suite .test_equals (
30
+ actual_value = lambda : type (schema ),
31
+ expected_value = StructType ,
32
+ description = "Schema is of type StructType" ,
33
+ hint = "Found [[ACTUAL_VALUE]]" ,
34
+ )
35
+
36
+ suite .test_length (
37
+ lambda : schema .fieldNames (),
38
+ expected_length = 7 ,
39
+ description = "Schema contians seven fields" ,
40
+ hint = "Found [[LEN_ACTUAL_VALUE]]: [[ACTUAL_VALUE]]" ,
41
+ )
42
+
43
+ suite .test_schema_field (lambda : schema , "order_id" , "LongType" , None )
44
+ suite .test_schema_field (lambda : schema , "email" , "StringType" , None )
45
+ suite .test_schema_field (lambda : schema , "transaction_timestamp" , "LongType" , None )
46
+ suite .test_schema_field (lambda : schema , "total_item_quantity" , "LongType" , None )
47
+ suite .test_schema_field (lambda : schema , "purchase_revenue_in_usd" , "DoubleType" , None )
48
+ suite .test_schema_field (lambda : schema , "unique_items" , "LongType" , None )
49
+ suite .test_schema_field (lambda : schema , "items" , "StructType" , None )
50
+
41
51
suite .display_results ()
42
52
assert suite .passed , "One or more tests failed."
43
53
44
-
45
54
# COMMAND ----------
46
55
47
- @TestHelper .monkey_patch
56
+ @ValidationHelper .monkey_patch
48
57
def validate_3_1 (self , query ):
49
58
suite = DA .tests .new ("5.1a-3.1" )
50
59
51
- suite .test_true (query .isActive , description = "The query is active" )
60
+ suite .test_true (actual_value = lambda : query .isActive , description = "The query is active" )
52
61
53
- suite .test_equals (coupon_sales_query .lastProgress ["name" ], "coupon_sales" ,
62
+ suite .test_equals (lambda : coupon_sales_query .lastProgress ["name" ], "coupon_sales" ,
54
63
description = "The query name is \" coupon_sales\" ." )
55
64
56
65
coupons_output_path = f"{ DA .paths .working_dir } /coupon-sales/output"
57
- suite .test (actual_value = None , test_function = lambda : len (dbutils .fs .ls (coupons_output_path )) > 0 ,
66
+ suite .test (actual_value = lambda : None , test_function = lambda : len (dbutils .fs .ls (coupons_output_path )) > 0 ,
58
67
description = f"Found at least one file in .../coupon-sales/output" )
59
68
60
69
coupons_checkpoint_path = f"{ DA .paths .checkpoints } /coupon-sales"
61
- suite .test (actual_value = None , test_function = lambda : len (dbutils .fs .ls (coupons_checkpoint_path )) > 0 ,
70
+ suite .test (actual_value = lambda : None , test_function = lambda : len (dbutils .fs .ls (coupons_checkpoint_path )) > 0 ,
62
71
description = f"Found at least one file in .../coupon-sales" )
63
72
64
73
suite .display_results ()
@@ -67,43 +76,43 @@ def validate_3_1(self, query):
67
76
68
77
# COMMAND ----------
69
78
70
- @TestHelper .monkey_patch
79
+ @ValidationHelper .monkey_patch
71
80
def validate_4_1 (self , query_id , query_status ):
72
81
suite = DA .tests .new ("5.1a-4.1" )
73
82
74
- suite .test_sequence (actual_value = query_status .keys (),
83
+ suite .test_sequence (actual_value = lambda : query_status .keys (),
75
84
expected_value = ["message" , "isDataAvailable" , "isTriggerActive" ],
76
85
test_column_order = False ,
77
86
description = "Valid status value." )
78
87
79
- suite .test_equals (type (query_id ), str , description = "Valid query_id value." )
88
+ suite .test_equals (lambda : type (query_id ), str , description = "Valid query_id value." )
80
89
81
90
suite .display_results ()
82
91
assert suite .passed , "One or more tests failed."
83
92
84
93
# COMMAND ----------
85
94
86
- @TestHelper .monkey_patch
95
+ @ValidationHelper .monkey_patch
87
96
def validate_5_1 (self , query ):
88
97
suite = DA .tests .new ("5.1a-5.1" )
89
98
90
- suite .test_false (query .isActive , description = "The query is not active" )
99
+ suite .test_false (actual_value = lambda : query .isActive , description = "The query is not active" )
91
100
92
101
suite .display_results ()
93
102
assert suite .passed , "One or more tests failed."
94
103
95
104
96
105
# COMMAND ----------
97
106
98
- DA = DBAcademyHelper (** helper_arguments ) # Create the DA object
99
- DA .reset_environment () # Reset by removing databases and files from other lessons
100
- DA .init (install_datasets = True , # Initialize, install and validate the datasets
101
- create_db = True ) # Continue initialization, create the user-db
107
+ DA = DBAcademyHelper (course_config , lesson_config )
108
+ DA .reset_lesson ()
109
+ DA .init ()
110
+ DA . conclude_setup ()
102
111
103
112
DA .paths .sales = f"{ DA .paths .datasets } /ecommerce/sales/sales.delta"
104
113
DA .paths .users = f"{ DA .paths .datasets } /ecommerce/users/users.delta"
105
114
DA .paths .events = f"{ DA .paths .datasets } /ecommerce/events/events.delta"
106
115
DA .paths .products = f"{ DA .paths .datasets } /products/products.delta"
107
116
108
- DA .conclude_setup () # Conclude setup by advertising environmental changes
117
+ DA .conclude_setup ()
109
118
0 commit comments