From 72b8c0f83ebe75d7f8b1a753b063c766cf63e232 Mon Sep 17 00:00:00 2001 From: Joaquin Alvarez Date: Thu, 26 Jun 2025 06:06:45 -0300 Subject: [PATCH] tests for past effective date --- tests/unit/test_rule_service.py | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/unit/test_rule_service.py b/tests/unit/test_rule_service.py index e7c5e74..2ab45e1 100644 --- a/tests/unit/test_rule_service.py +++ b/tests/unit/test_rule_service.py @@ -3,6 +3,7 @@ import pytest from bson import ObjectId +from fastapi import HTTPException from app.models.rule import Rule from app.service.rule_service import RuleService @@ -98,6 +99,21 @@ def test_save_new_rule(mock_conn, sample_rule, sample_rule_dict): mock_conn.find_one.assert_called_once_with({"_id": inserted_id}) +def test_save_rule_invalid_date_raises(mock_conn): + past_date = (datetime.now() - timedelta(days=1)).date() + rule = Rule( + title="Invalid Rule", + description="", + effectiveDate=past_date, + conditions=[], + ) + service = RuleService() + with pytest.raises(HTTPException) as exc_info: + service.save_rule(rule, "test@email.com", "test_token") + assert exc_info.value.status_code == 400 + assert "effective date must be after today" in str(exc_info.value.detail).lower() + + def test_get_rule_success(mock_conn, sample_rule_dict): rule_id = str(sample_rule_dict["_id"]) mock_conn.find_one.return_value = sample_rule_dict @@ -135,6 +151,24 @@ def test_update_rule_success(mock_conn, sample_rule, sample_rule_dict): ) +def test_update_rule_invalid_date_raises(mock_conn, sample_rule_dict): + # Fecha pasada (ayer) + past_date = (datetime.now() - timedelta(days=1)).date() + rule_id = str(sample_rule_dict["_id"]) + rule = Rule( + title="Invalid Rule", + description="", + effectiveDate=past_date, + conditions=[], + ) + mock_conn.find_one.return_value = sample_rule_dict + service = RuleService() + with pytest.raises(HTTPException) as exc_info: + service.update_rule_by_id(rule_id, rule, "test@email.com", "test_token") + assert exc_info.value.status_code == 400 + assert "effective date must be after today" in str(exc_info.value.detail).lower() + + def test_delete_rule_success(mock_conn, sample_rule_dict): rule_id = str(sample_rule_dict["_id"]) mock_conn.find_one_and_delete.return_value = sample_rule_dict