From 90e7d99239cc8c3a269609e82c9ca7066ccc54b3 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Wed, 2 Jul 2025 08:08:02 -0700 Subject: [PATCH] more tests --- .ds.baseline | 4 +-- tests/app/service/test_rest.py | 48 +++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/.ds.baseline b/.ds.baseline index 6564d0551..5c9d98348 100644 --- a/.ds.baseline +++ b/.ds.baseline @@ -295,7 +295,7 @@ "filename": "tests/app/service/test_rest.py", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 1282, + "line_number": 1283, "is_secret": false } ], @@ -374,5 +374,5 @@ } ] }, - "generated_at": "2025-07-02T14:30:24Z" + "generated_at": "2025-07-02T15:07:48Z" } diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 3a706ec7a..4d16bd62f 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -1,7 +1,7 @@ import json import uuid from datetime import date, datetime, timedelta -from unittest.mock import ANY +from unittest.mock import ANY, MagicMock, patch import pytest from flask import current_app, url_for @@ -38,6 +38,7 @@ from app.models import ( ServiceSmsSender, User, ) +from app.service.rest import get_service_statistics_for_specific_days from app.utils import utc_now from tests import create_admin_authorization_header from tests.app.db import ( @@ -3747,3 +3748,48 @@ def test_get_service_notification_statistics_by_day( # except Exception as e: # assert e.status_code == 400 # assert {"service_id": ["Can't be empty"] in e.errors} + + +@patch("app.service.rest.check_suspicious_id") +@patch("app.service.rest.dao_fetch_stats_for_service_from_hours") +@patch("app.service.rest.get_specific_hours_stats") +def test_get_service_statistics_for_specific_days( + mock_get_stats, mock_fetch_stats, mock_check_id +): + service_id = "test-service" + start_date_str = "2025-07-01" + days = 2 + + fake_total_notifications = { + datetime(2025, 6, 30, 12): 100, + datetime(2025, 6, 30, 13): 200, + } + fake_results = [ + MagicMock( + notification_type="email", + status="delivered", + hour=datetime(2025, 6, 30, 12), + count=50, + ), + MagicMock( + notification_type="sms", + status="failed", + hour=datetime(2025, 6, 30, 13), + count=150, + ), + ] + mock_fetch_stats.return_value = (fake_total_notifications, fake_results) + expected_output = {"emails_sent": 50, "sms_failed": 150} + mock_get_stats.return_value = expected_output + result = get_service_statistics_for_specific_days(service_id, start_date_str, days) + assert result == expected_output + mock_check_id.assert_called_once_with(service_id) + expected_start = datetime(2025, 6, 30) + expected_end = datetime(2025, 7, 1) + mock_fetch_stats.assert_called_once_with(service_id, expected_start, expected_end) + mock_get_stats.assert_called_once_with( + fake_results, + expected_start, + hours=48, + total_notifications=fake_total_notifications, + )