Skip to content

Commit 9eb2087

Browse files
fix: Handle none values and column grouping in results/steps dataframe utility (#119)
1 parent e8c8426 commit 9eb2087

File tree

3 files changed

+71
-7
lines changed

3 files changed

+71
-7
lines changed

nisystemlink/clients/testmonitor/utilities/_dataframe_utilities.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,11 @@ def __normalize_status(
110110
111111
"""
112112
status = data.get("status", {})
113-
if status.get("status_type") == "CUSTOM":
114-
data["status"] = status.get("status_name", None)
115-
else:
116-
data["status"] = getattr(status.get("status_type", None), "value", None)
113+
if status:
114+
if status.get("status_type") == "CUSTOM":
115+
data["status"] = status.get("status_name", None)
116+
else:
117+
data["status"] = getattr(status.get("status_type", None), "value", None)
117118

118119

119120
def __format_results_columns(results_dataframe: pd.DataFrame) -> pd.DataFrame:
@@ -229,11 +230,16 @@ def __filter_invalid_measurements(
229230
if step.data and step.data.parameters and is_valid_measurement is not None:
230231
valid_measurement_parameters = []
231232
for measurement in step.data.parameters:
232-
if is_valid_measurement and is_valid_measurement(measurement):
233+
if (
234+
measurement
235+
and is_valid_measurement
236+
and is_valid_measurement(measurement)
237+
):
233238
valid_measurement_parameters.append(measurement)
234239

235240
step_dict["data"]["parameters"] = [
236-
measurement.dict() for measurement in valid_measurement_parameters
241+
measurement.dict(exclude_none=True)
242+
for measurement in valid_measurement_parameters
237243
]
238244

239245

nisystemlink/clients/testmonitor/utilities/constants.py

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ class DataFrameHeaders:
55

66
CATEGORY_COLUMN_HEADERS = [
77
"general",
8+
"inputs",
89
"outputs",
910
"data",
1011
"properties",

tests/testmonitor/test_testmonitor_dataframe_utilities.py

+58-1
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,6 @@ def test__convert_steps_to_dataframe_with_invalid_data_parameters__returns_only_
455455
"name",
456456
"step_id",
457457
"result_id",
458-
"status",
459458
"data.text",
460459
]
461460
expected_steps_dataframe = self.__get_expected_steps_dataframe(
@@ -473,6 +472,64 @@ def test__convert_steps_to_dataframe_with_invalid_data_parameters__returns_only_
473472
steps_dataframe, expected_steps_dataframe, check_dtype=True
474473
)
475474

475+
def test__convert_steps_to_dataframe_with_many_unset_measurement_fields__not_returns_unset_measurements_fields(
476+
self,
477+
):
478+
step_data = Step(
479+
name="step_name",
480+
step_id="5ffb2bf6771fa11e877838dd6",
481+
result_id="5ffb2bf6771fa11e877838dd8",
482+
data=StepData(
483+
text="data1",
484+
parameters=[
485+
Measurement(
486+
name="parameter_11",
487+
measurement="11.0",
488+
),
489+
Measurement(
490+
name="parameter_21",
491+
measurement="11.3",
492+
),
493+
],
494+
),
495+
)
496+
expected_column_order = [
497+
"name",
498+
"step_id",
499+
"result_id",
500+
"data.text",
501+
"data.measurement.name",
502+
"data.measurement.measurement",
503+
]
504+
expected_data_parameters = [
505+
[
506+
{
507+
"data.measurement.name": "parameter_11",
508+
"data.measurement.measurement": "11.0",
509+
},
510+
{
511+
"data.measurement.name": "parameter_21",
512+
"data.measurement.measurement": "11.3",
513+
},
514+
]
515+
]
516+
expected_steps_dataframe = self.__get_expected_steps_dataframe(
517+
[step_data],
518+
expected_column_order=expected_column_order,
519+
expected_data_parameters=expected_data_parameters,
520+
)
521+
522+
steps_dataframe = convert_steps_to_dataframe([step_data])
523+
524+
assert not steps_dataframe.empty
525+
assert (
526+
steps_dataframe.columns.to_list()
527+
== expected_steps_dataframe.columns.to_list()
528+
)
529+
pd.testing.assert_frame_equal(
530+
steps_dataframe, expected_steps_dataframe, check_dtype=True
531+
)
532+
476533
def test__convert_steps_to_dataframe_with_none_callback__returns_step_with_all_data_parameters(
477534
self, mock_steps_data: List[Step]
478535
):

0 commit comments

Comments
 (0)