From 8b738c34f6421320066fbd884836b706d2543e2a Mon Sep 17 00:00:00 2001 From: marcoagonzales007 Date: Sun, 31 May 2026 19:24:06 -0700 Subject: [PATCH 1/2] Add unit tests for ColdfrontFetchProcessor --- .../test_coldfront_fetch_processor.py | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/process_report/tests/unit/processors/test_coldfront_fetch_processor.py b/process_report/tests/unit/processors/test_coldfront_fetch_processor.py index 6f401662..508dee8d 100644 --- a/process_report/tests/unit/processors/test_coldfront_fetch_processor.py +++ b/process_report/tests/unit/processors/test_coldfront_fetch_processor.py @@ -1,7 +1,7 @@ from unittest import TestCase, mock import pandas import pytest - +import json from process_report.tests import util as test_utils @@ -259,3 +259,31 @@ def test_missing_project_cluster_tuples(self, mock_get_allocation_data): assert str(cm.value) == ( f"Projects {expected_missing} not found in Coldfront and are billable! Please check the project names" ) + + def test_get_coldfront_api_data_with_filepath(self): + mock_api_data = [{"project": "test"}] + with mock.patch( + "builtins.open", mock.mock_open(read_data=json.dumps(mock_api_data)) + ): + proc = test_utils.new_coldfront_fetch_processor( + coldfront_data_filepath="fake/path.json" + ) + result = proc._get_coldfront_api_data() + assert result == mock_api_data + + @mock.patch( + "process_report.processors.coldfront_fetch_processor.ColdfrontFetchProcessor._fetch_coldfront_allocation_api", + ) + def test_get_allocation_data_missing_key(self, mock_get_allocation_data): + """Malformed allocation entries with missing keys are skipped.""" + mock_get_allocation_data.return_value = [ + { + "resource": {"name": "stack"}, + "project": {"pi": "PI1"}, + "attributes": {}, + }, # missing Allocated Project ID + ] + test_invoice = self._get_test_invoice(["P1"], cluster_name=["stack"]) + proc = test_utils.new_coldfront_fetch_processor(data=test_invoice) + result = proc._get_allocation_data(mock_get_allocation_data.return_value) + assert result == {} # malformed entry was skipped From 823de938aea805e4b7a2794aadfdcf032a07693b Mon Sep 17 00:00:00 2001 From: marcoagonzales007 Date: Sun, 7 Jun 2026 13:35:12 -0700 Subject: [PATCH 2/2] Address PR feedback: remove unnecessary mock from test_get_allocation_data_missing_key --- .../processors/test_coldfront_fetch_processor.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/process_report/tests/unit/processors/test_coldfront_fetch_processor.py b/process_report/tests/unit/processors/test_coldfront_fetch_processor.py index 508dee8d..8a9ac5f2 100644 --- a/process_report/tests/unit/processors/test_coldfront_fetch_processor.py +++ b/process_report/tests/unit/processors/test_coldfront_fetch_processor.py @@ -271,19 +271,15 @@ def test_get_coldfront_api_data_with_filepath(self): result = proc._get_coldfront_api_data() assert result == mock_api_data - @mock.patch( - "process_report.processors.coldfront_fetch_processor.ColdfrontFetchProcessor._fetch_coldfront_allocation_api", - ) - def test_get_allocation_data_missing_key(self, mock_get_allocation_data): + def test_get_allocation_data_missing_key(self): """Malformed allocation entries with missing keys are skipped.""" - mock_get_allocation_data.return_value = [ + test_allocation_data = [ { "resource": {"name": "stack"}, "project": {"pi": "PI1"}, "attributes": {}, }, # missing Allocated Project ID ] - test_invoice = self._get_test_invoice(["P1"], cluster_name=["stack"]) - proc = test_utils.new_coldfront_fetch_processor(data=test_invoice) - result = proc._get_allocation_data(mock_get_allocation_data.return_value) + proc = test_utils.new_coldfront_fetch_processor() + result = proc._get_allocation_data(test_allocation_data) assert result == {} # malformed entry was skipped