Skip to content

Commit 18bd82b

Browse files
committed
refactor:UnitTests
1 parent c8809f9 commit 18bd82b

File tree

2 files changed

+50
-60
lines changed

2 files changed

+50
-60
lines changed

nisystemlink/clients/testmonitor/utilities/_dataframe_utilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def convert_results_to_dataframe(
3030
normalized_dataframe = __format_results_columns(
3131
results_dataframe=normalized_dataframe
3232
)
33-
if set_id_as_index and "id" in normalized_dataframe.columns.to_list():
33+
if set_id_as_index and "id" in normalized_dataframe.columns:
3434
normalized_dataframe = normalized_dataframe.set_index("id")
3535

3636
return normalized_dataframe

tests/testmonitor/test_testmonitor_dataframe_utilities.py

Lines changed: 49 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)