Skip to content

Commit dc98691

Browse files
authored
Merge pull request #46 from ClassConnect-org/admin-refactor
tests for past effective date
2 parents 6debb63 + 72b8c0f commit dc98691

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

tests/unit/test_rule_service.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import pytest
55
from bson import ObjectId
6+
from fastapi import HTTPException
67

78
from app.models.rule import Rule
89
from app.service.rule_service import RuleService
@@ -98,6 +99,21 @@ def test_save_new_rule(mock_conn, sample_rule, sample_rule_dict):
9899
mock_conn.find_one.assert_called_once_with({"_id": inserted_id})
99100

100101

102+
def test_save_rule_invalid_date_raises(mock_conn):
103+
past_date = (datetime.now() - timedelta(days=1)).date()
104+
rule = Rule(
105+
title="Invalid Rule",
106+
description="",
107+
effectiveDate=past_date,
108+
conditions=[],
109+
)
110+
service = RuleService()
111+
with pytest.raises(HTTPException) as exc_info:
112+
service.save_rule(rule, "test@email.com", "test_token")
113+
assert exc_info.value.status_code == 400
114+
assert "effective date must be after today" in str(exc_info.value.detail).lower()
115+
116+
101117
def test_get_rule_success(mock_conn, sample_rule_dict):
102118
rule_id = str(sample_rule_dict["_id"])
103119
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):
135151
)
136152

137153

154+
def test_update_rule_invalid_date_raises(mock_conn, sample_rule_dict):
155+
# Fecha pasada (ayer)
156+
past_date = (datetime.now() - timedelta(days=1)).date()
157+
rule_id = str(sample_rule_dict["_id"])
158+
rule = Rule(
159+
title="Invalid Rule",
160+
description="",
161+
effectiveDate=past_date,
162+
conditions=[],
163+
)
164+
mock_conn.find_one.return_value = sample_rule_dict
165+
service = RuleService()
166+
with pytest.raises(HTTPException) as exc_info:
167+
service.update_rule_by_id(rule_id, rule, "test@email.com", "test_token")
168+
assert exc_info.value.status_code == 400
169+
assert "effective date must be after today" in str(exc_info.value.detail).lower()
170+
171+
138172
def test_delete_rule_success(mock_conn, sample_rule_dict):
139173
rule_id = str(sample_rule_dict["_id"])
140174
mock_conn.find_one_and_delete.return_value = sample_rule_dict

0 commit comments

Comments
 (0)