Skip to content

Commit fcc1fec

Browse files
ELI-674 - new test case for validators
1 parent cc9873a commit fcc1fec

3 files changed

Lines changed: 38 additions & 12 deletions

File tree

src/rules_validation_api/app.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,24 +112,22 @@ def display_current_iteration(result: RulesValidation) -> None:
112112
sorted_iterations = sorted(iterations, key=attrgetter("iteration_date"))
113113

114114
try:
115-
next_iteration = next(
116-
(i for i in sorted_iterations if i.iteration_date > today), None
117-
)
115+
next_iteration = next((i for i in sorted_iterations if i.iteration_date > today), None)
118116

119117
if next_iteration:
120118
sys.stdout.write(
121119
f"{YELLOW}Next active Iteration Number: {RESET}{GREEN}{next_iteration.iteration_number}{RESET}\n"
122120
)
123121
sys.stdout.write(
124-
f"{YELLOW}Next active Iteration's date&time: {RESET}{GREEN}{next_iteration.iteration_datetime}{RESET}\n"
122+
f"{YELLOW}Next active Iteration's date&time: "
123+
f"{RESET}{GREEN}{next_iteration.iteration_datetime}{RESET}\n"
125124
)
126125
except StopIteration:
127126
sys.stdout.write(f"{YELLOW}No next active iteration could be determined{RESET}\n")
128127

129128
# ---- Total Iterations ----
130-
sys.stdout.write(
131-
f"{YELLOW}Total iterations configured: {RESET}{GREEN}{no_of_iterations}{RESET}\n"
132-
)
129+
sys.stdout.write(f"{YELLOW}Total iterations configured: {RESET}{GREEN}{no_of_iterations}{RESET}\n")
130+
133131

134132
if __name__ == "__main__": # pragma: no cover
135133
main()

tests/unit/validation/test_app.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import sys
2+
from datetime import UTC, datetime, timedelta
23
from io import StringIO
34
from unittest.mock import Mock, PropertyMock
4-
from datetime import UTC, datetime, timedelta
55

66
from pydantic import BaseModel, ValidationError
77

@@ -107,6 +107,7 @@ def test_current_iteration_exists():
107107
# Arrange
108108
mock_iteration = Mock()
109109
mock_iteration.iteration_number = 7
110+
mock_iteration.iteration_date = datetime.now(UTC).date() - timedelta(days=1)
110111

111112
result = Mock()
112113
result.campaign_config = Mock()
@@ -123,5 +124,34 @@ def test_current_iteration_exists():
123124

124125
sys.stdout = sys.__stdout__
125126

126-
assert "Current Iteration Number:" in captured.getvalue()
127+
assert "Current active Iteration Number:" in captured.getvalue()
127128
assert "7" in captured.getvalue()
129+
130+
131+
def test_next_iteration_exists():
132+
# Given
133+
today = datetime.now(UTC).date()
134+
135+
# Setup
136+
next_mock = Mock()
137+
next_mock.iteration_number = 8
138+
next_mock.iteration_date = today + timedelta(days=5)
139+
next_mock.iteration_datetime = today + timedelta(days=5)
140+
141+
result = Mock()
142+
result.campaign_config.end_date = today + timedelta(days=10)
143+
result.campaign_config.iterations = [next_mock]
144+
result.campaign_config.campaign_live = False # To focus only on Next Iteration output
145+
146+
captured = StringIO()
147+
sys.stdout = captured
148+
149+
# When
150+
display_current_iteration(result)
151+
sys.stdout = sys.__stdout__
152+
output = captured.getvalue()
153+
154+
# Then
155+
assert "Next active Iteration Number:" in output
156+
assert "8" in output
157+
assert str(today + timedelta(days=5)) in output

tests/unit/validation/test_campaign_config_validator.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,7 @@ def test_reviewer_field(self, reviewer, valid_campaign_config_with_only_mandator
168168
assert model.reviewer == reviewer
169169

170170
@pytest.mark.parametrize("iteration_time", ["14:00:00", "09:30:00", "18:45:00"])
171-
def test_iteration_time_field(
172-
self, iteration_time, valid_campaign_config_with_only_mandatory_fields
173-
):
171+
def test_iteration_time_field(self, iteration_time, valid_campaign_config_with_only_mandatory_fields):
174172
data = {**valid_campaign_config_with_only_mandatory_fields, "IterationTime": iteration_time}
175173
model = CampaignConfigValidation(**data)
176174
assert model.iteration_time == datetime.strptime(iteration_time, "%H:%M:%S").time() # noqa: DTZ007

0 commit comments

Comments
 (0)