@@ -80,19 +80,14 @@ class TestTestmonitorDataframeUtilities:
8080 def test__convert_results_with_all_fields_to_dataframe__returns_whole_results_dataframe (
8181 self , results
8282 ):
83- expected_results_dataframe = self .get_expected_results_dataframe (
83+ expected_results_dataframe = self .__get_expected_results_dataframe (
8484 results = results
8585 )
86- expected_result_index = [0 , 1 , 2 ]
8786
8887 results_dataframe = convert_results_to_dataframe (results = results )
89- results_index = results_dataframe .index .to_list ()
9088
9189 assert not results_dataframe .empty
92- assert isinstance (results_dataframe , pd .DataFrame )
93- assert len (results_dataframe ) == 3
9490 assert len (results_dataframe .columns .tolist ()) == 20
95- assert results_index == expected_result_index
9691 pd .testing .assert_frame_equal (
9792 results_dataframe , expected_results_dataframe , check_dtype = True
9893 )
@@ -111,19 +106,14 @@ def test__convert_results_with_specific_fields_to_dataframe__returns_results_dat
111106 self , results
112107 ):
113108 results = results [1 :]
114- expected_results_dataframe = self .get_expected_results_dataframe (
109+ expected_results_dataframe = self .__get_expected_results_dataframe (
115110 results = results
116111 )
117- expected_result_index = [0 , 1 ]
118112
119113 results_dataframe = convert_results_to_dataframe (results = results )
120- results_index = results_dataframe .index .to_list ()
121114
122115 assert not results_dataframe .empty
123- assert isinstance (results_dataframe , pd .DataFrame )
124- assert len (results_dataframe ) == 2
125116 assert len (results_dataframe .columns .tolist ()) == 13
126- assert results_index == expected_result_index
127117 pd .testing .assert_frame_equal (
128118 results_dataframe , expected_results_dataframe , check_dtype = True
129119 )
@@ -139,22 +129,17 @@ def test__convert_results_with_specific_fields_to_dataframe__returns_results_dat
139129 def test__convert_results_to_dataframe_with_id_index__returns_results_dataframe_with_id_index (
140130 self , results
141131 ):
142- expected_results_dataframe = self .get_expected_results_dataframe (
132+ expected_results_dataframe = self .__get_expected_results_dataframe (
143133 results = results
144134 )
145135 expected_results_dataframe = expected_results_dataframe .set_index ("id" )
146- expected_result_index = expected_results_dataframe .index .to_list ()
147136
148137 results_dataframe = convert_results_to_dataframe (
149138 results = results , set_id_as_index = True
150139 )
151- results_index = results_dataframe .index .to_list ()
152140
153141 assert not results_dataframe .empty
154- assert isinstance (results_dataframe , pd .DataFrame )
155- assert len (results_dataframe ) == 3
156142 assert len (results_dataframe .columns .tolist ()) == 19
157- assert results_index == expected_result_index
158143 pd .testing .assert_frame_equal (
159144 results_dataframe , expected_results_dataframe , check_dtype = True
160145 )
@@ -177,47 +162,52 @@ def test__convert_results_to_dataframe_with_no_results__returns_empty_dataframe(
177162 assert isinstance (results_dataframe , pd .DataFrame )
178163 assert results_dataframe .empty
179164
180- def get_expected_results_dataframe (self , results ):
181- results_dict = [
182- {
183- "status" : {
184- "status_type" : result .status .status_type ,
185- "status_name" : result .status .status_name ,
186- },
187- "started_at" : result .started_at ,
188- "updated_at" : result .updated_at ,
189- "program_name" : result .program_name ,
190- "id" : result .id ,
191- "system_id" : result .system_id ,
192- "host_name" : result .host_name ,
193- "part_number" : result .part_number ,
194- "serial_number" : result .serial_number ,
195- "total_time_in_seconds" : result .total_time_in_seconds ,
196- "keywords" : result .keywords ,
197- "properties" : result .properties ,
198- "operator" : result .operator ,
199- "file_ids" : result .file_ids ,
200- "data_table_ids" : result .data_table_ids ,
201- "status_type_summary" : result .status_type_summary ,
202- "workspace" : result .workspace ,
203- }
204- for result in results
205- ]
206-
207- results_df = pd .json_normalize (results_dict , sep = "." )
165+ def __get_expected_results_dataframe (self , results : List [Result ]):
166+ results_dict = []
167+ for result in results :
168+ status_type_summary = (
169+ {
170+ f"status_type_summary.{ key } " : value
171+ for key , value in result .status_type_summary .items ()
172+ }
173+ if result .status_type_summary
174+ else {}
175+ )
176+ properties = (
177+ {f"properties.{ key } " : value for key , value in result .properties .items ()}
178+ if result .properties
179+ else {}
180+ )
181+ results_dict .append (
182+ {
183+ ** {
184+ "started_at" : result .started_at ,
185+ "updated_at" : result .updated_at ,
186+ "program_name" : result .program_name ,
187+ "id" : result .id ,
188+ "system_id" : result .system_id ,
189+ "host_name" : result .host_name ,
190+ "part_number" : result .part_number ,
191+ "serial_number" : result .serial_number ,
192+ "total_time_in_seconds" : result .total_time_in_seconds ,
193+ "keywords" : result .keywords ,
194+ "operator" : result .operator ,
195+ "file_ids" : result .file_ids ,
196+ "data_table_ids" : result .data_table_ids ,
197+ "workspace" : result .workspace ,
198+ "status.status_type" : (
199+ result .status .status_type if result .status else None
200+ ),
201+ "status.status_name" : (
202+ result .status .status_name if result .status else None
203+ ),
204+ },
205+ ** status_type_summary ,
206+ ** properties ,
207+ }
208+ )
209+
210+ results_df = pd .DataFrame (results_dict )
208211 results_df .dropna (axis = "columns" , how = "all" , inplace = True )
209- status_type_summary_columns = [
210- results_df .pop (column )
211- for column in results_df .columns .to_list ()
212- if column .startswith ("status_type_summary." )
213- ]
214- property_columns = [
215- results_df .pop (column )
216- for column in results_df .columns .to_list ()
217- if column .startswith ("properties." )
218- ]
219- results_df = pd .concat (
220- [results_df ] + status_type_summary_columns + property_columns , axis = 1
221- )
222212
223213 return results_df
0 commit comments