|
3 | 3 |
|
4 | 4 | import pytest |
5 | 5 | from bson import ObjectId |
| 6 | +from fastapi import HTTPException |
6 | 7 |
|
7 | 8 | from app.models.rule import Rule |
8 | 9 | from app.service.rule_service import RuleService |
@@ -98,6 +99,21 @@ def test_save_new_rule(mock_conn, sample_rule, sample_rule_dict): |
98 | 99 | mock_conn.find_one.assert_called_once_with({"_id": inserted_id}) |
99 | 100 |
|
100 | 101 |
|
| 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 | + |
101 | 117 | def test_get_rule_success(mock_conn, sample_rule_dict): |
102 | 118 | rule_id = str(sample_rule_dict["_id"]) |
103 | 119 | 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): |
135 | 151 | ) |
136 | 152 |
|
137 | 153 |
|
| 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 | + |
138 | 172 | def test_delete_rule_success(mock_conn, sample_rule_dict): |
139 | 173 | rule_id = str(sample_rule_dict["_id"]) |
140 | 174 | mock_conn.find_one_and_delete.return_value = sample_rule_dict |
|
0 commit comments