|
1 | 1 | import uuid |
2 | 2 | from typing import Dict, List, Optional |
3 | 3 |
|
4 | | -import pandas as pd |
5 | 4 | import pytest |
6 | 5 | from nisystemlink.clients.core._http_configuration import HttpConfiguration |
7 | 6 | from nisystemlink.clients.testmonitor import TestMonitorClient |
8 | 7 | from nisystemlink.clients.testmonitor.models import ( |
9 | 8 | CreateResultRequest, |
10 | 9 | CreateResultsPartialSuccess, |
11 | 10 | Result, |
12 | | - ResultProjection, |
13 | 11 | Status, |
14 | 12 | UpdateResultRequest, |
15 | 13 | ) |
|
19 | 17 | QueryResultValuesRequest, |
20 | 18 | ResultField, |
21 | 19 | ) |
22 | | -from nisystemlink.clients.testmonitor.utilities import get_results_dataframe |
23 | 20 |
|
24 | 21 |
|
25 | 22 | @pytest.fixture(scope="class") |
@@ -397,92 +394,8 @@ def test__update_properties_append__properties_appended( |
397 | 394 | ) |
398 | 395 | assert updated_result.properties[new_key] == new_properties[new_key] |
399 | 396 |
|
400 | | - def test__get_results_dataframe_without_column_projection__returns_complete_results_dataframe( |
401 | | - self, client: TestMonitorClient, create_results, unique_identifier |
402 | | - ): |
403 | | - create_results_request = CreateResultRequest( |
404 | | - part_number=unique_identifier, |
405 | | - program_name="Test Program", |
406 | | - status=Status.PASSED(), |
407 | | - ) |
408 | | - create_results([create_results_request, create_results_request]) |
409 | | - query_results_filter = f'partNumber="{unique_identifier}"' |
410 | | - query_response: PagedResults = client.query_results( |
411 | | - QueryResultsRequest(filter=query_results_filter) |
412 | | - ) |
413 | | - expected_results_dataframe = self.__get_expected_results_dataframe( |
414 | | - query_response.results |
415 | | - ) |
416 | | - |
417 | | - results_dataframe = get_results_dataframe( |
418 | | - client, query_filter=query_results_filter |
419 | | - ) |
420 | | - |
421 | | - assert not results_dataframe.empty |
422 | | - assert isinstance(results_dataframe, pd.DataFrame) |
423 | | - assert len(results_dataframe) == 2 |
424 | | - assert len(results_dataframe.columns.tolist()) == 22 |
425 | | - assert results_dataframe.equals(expected_results_dataframe) |
426 | | - |
427 | | - def test__get_results_dataframe_with_column_projection__returns_dataframe_with_projected_columns( |
428 | | - self, client: TestMonitorClient, create_results, unique_identifier |
429 | | - ): |
430 | | - create_results_request = CreateResultRequest( |
431 | | - part_number=unique_identifier, |
432 | | - program_name="Test Program", |
433 | | - status=Status.PASSED(), |
434 | | - ) |
435 | | - create_results([create_results_request, create_results_request]) |
436 | | - query_results_filter = f'partNumber="{unique_identifier}"' |
437 | | - query_response: PagedResults = client.query_results( |
438 | | - QueryResultsRequest( |
439 | | - filter=query_results_filter, |
440 | | - projection=[ |
441 | | - ResultProjection.PART_NUMBER, |
442 | | - ResultProjection.PROGRAM_NAME, |
443 | | - ], |
444 | | - ) |
445 | | - ) |
446 | | - expected_results_dataframe = self.__get_expected_results_dataframe( |
447 | | - query_response.results |
448 | | - ) |
449 | | - |
450 | | - results_dataframe = get_results_dataframe( |
451 | | - client, |
452 | | - query_filter=query_results_filter, |
453 | | - column_projection=[ |
454 | | - ResultProjection.PART_NUMBER, |
455 | | - ResultProjection.PROGRAM_NAME, |
456 | | - ], |
457 | | - ) |
458 | | - |
459 | | - assert not results_dataframe.empty |
460 | | - assert isinstance(results_dataframe, pd.DataFrame) |
461 | | - assert len(results_dataframe) == 2 |
462 | | - assert len(results_dataframe.columns.tolist()) == 2 |
463 | | - assert results_dataframe.equals(expected_results_dataframe) |
464 | | - |
465 | | - def test__get_results_dataframe_with_no_results__returns_empty_dataframe( |
466 | | - self, client: TestMonitorClient, create_results, unique_identifier |
467 | | - ): |
468 | | - invalid_part_number = unique_identifier |
469 | | - |
470 | | - results_dataframe = get_results_dataframe( |
471 | | - client, query_filter=f'partNumber="{invalid_part_number}"' |
472 | | - ) |
473 | | - |
474 | | - assert isinstance(results_dataframe, pd.DataFrame) |
475 | | - assert results_dataframe.empty |
476 | | - |
477 | 397 | def __map_result_to_update_result_request( |
478 | 398 | self, result: Result |
479 | 399 | ) -> UpdateResultRequest: |
480 | 400 | result_dict = result.dict(exclude={"status_type_summary", "updated_at"}) |
481 | 401 | return UpdateResultRequest(**result_dict) |
482 | | - |
483 | | - def __get_expected_results_dataframe(self, results: List[Result]) -> List[dict]: |
484 | | - expected_results_dict = [result.dict(exclude_unset=True) for result in results] |
485 | | - expected_results_dataframe = pd.json_normalize(expected_results_dict, sep=".") |
486 | | - expected_results_dataframe.dropna(axis="columns", how="all", inplace=True) |
487 | | - |
488 | | - return expected_results_dataframe |
0 commit comments