|
1 | 1 | import datetime
|
| 2 | +from types import SimpleNamespace |
| 3 | +from unittest.mock import patch |
2 | 4 |
|
3 | 5 | from django.contrib.auth import get_user_model
|
4 | 6 | from django.test import TestCase
|
@@ -62,7 +64,6 @@ def test_recurring_event(self):
|
62 | 64 | self.assertEqual(self.event.next_time.dt_start, recurring_time_dtstart)
|
63 | 65 | self.assertTrue(rt.valid_dt_end())
|
64 | 66 |
|
65 |
| - |
66 | 67 | rt.begin = now - datetime.timedelta(days=5)
|
67 | 68 | rt.finish = now - datetime.timedelta(days=3)
|
68 | 69 | rt.save()
|
@@ -186,3 +187,61 @@ def test_event_previous_event(self):
|
186 | 187 | # 'Event.previous_event' can return None if there is no
|
187 | 188 | # OccurringRule or RecurringRule found.
|
188 | 189 | self.assertIsNone(self.event.previous_event)
|
| 190 | + |
| 191 | + def test_scheduled_to_start_this_year_method(self): |
| 192 | + test_datetime = SimpleNamespace( |
| 193 | + now=lambda: timezone.datetime(timezone.now().year, |
| 194 | + 6, 1, tzinfo=timezone.now().tzinfo) |
| 195 | + ) |
| 196 | + |
| 197 | + with patch("django.utils.timezone", new=test_datetime) as mock_timezone: |
| 198 | + with patch("events.models.timezone", new=test_datetime): |
| 199 | + now = seconds_resolution(mock_timezone.now()) |
| 200 | + |
| 201 | + occurring_time_dtstart = now + datetime.timedelta(days=1) |
| 202 | + OccurringRule.objects.create( |
| 203 | + event=self.event, |
| 204 | + dt_start=occurring_time_dtstart, |
| 205 | + dt_end=occurring_time_dtstart + datetime.timedelta(days=3) |
| 206 | + ) |
| 207 | + self.assertTrue(self.event.is_scheduled_to_start_this_year()) |
| 208 | + |
| 209 | + OccurringRule.objects.get(event=self.event).delete() |
| 210 | + |
| 211 | + event_not_scheduled_to_start_this_year_occurring_time_dtstart = now + datetime.timedelta(days=365) |
| 212 | + OccurringRule.objects.create( |
| 213 | + event=self.event, |
| 214 | + dt_start=event_not_scheduled_to_start_this_year_occurring_time_dtstart, |
| 215 | + dt_end=event_not_scheduled_to_start_this_year_occurring_time_dtstart + datetime.timedelta(days=3) |
| 216 | + ) |
| 217 | + |
| 218 | + self.assertFalse(self.event.is_scheduled_to_start_this_year()) |
| 219 | + |
| 220 | + def test_scheduled_to_end_this_year_method(self): |
| 221 | + test_datetime = SimpleNamespace( |
| 222 | + now=lambda: timezone.datetime(timezone.now().year, |
| 223 | + 6, 1, tzinfo=timezone.now().tzinfo) |
| 224 | + ) |
| 225 | + |
| 226 | + with patch("django.utils.timezone", new=test_datetime) as mock_timezone: |
| 227 | + with patch("events.models.timezone", new=test_datetime): |
| 228 | + now = seconds_resolution(mock_timezone.now()) |
| 229 | + occurring_time_dtstart = now + datetime.timedelta(days=1) |
| 230 | + |
| 231 | + OccurringRule.objects.create( |
| 232 | + event=self.event, |
| 233 | + dt_start=occurring_time_dtstart, |
| 234 | + dt_end=occurring_time_dtstart |
| 235 | + ) |
| 236 | + |
| 237 | + self.assertTrue(self.event.is_scheduled_to_end_this_year()) |
| 238 | + |
| 239 | + OccurringRule.objects.get(event=self.event).delete() |
| 240 | + |
| 241 | + OccurringRule.objects.create( |
| 242 | + event=self.event, |
| 243 | + dt_start=now, |
| 244 | + dt_end=now + datetime.timedelta(days=365) |
| 245 | + ) |
| 246 | + |
| 247 | + self.assertFalse(self.event.is_scheduled_to_end_this_year()) |
0 commit comments