Skip to content

Commit 99436f9

Browse files
committed
TaskChunkSeries: Disallow start to be after end date
1 parent 42436de commit 99436f9

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

task/serializers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,11 @@ def validate(self, data):
276276
except ValidationError as error:
277277
errors['monthly_day'].append(error)
278278

279+
end = data.get('end')
280+
if start and end and start > end:
281+
errors['start'] = 'start date may not be after the end date'
282+
errors['end'] = 'end date may not be before the start date'
283+
279284
if errors:
280285
raise ValidationError(errors)
281286

task/tests.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3608,6 +3608,46 @@ def test_validation_update_change_end(self):
36083608
instance.end,
36093609
date(2010, 5, 1))
36103610

3611+
def test_validation_create_start_after_end(self):
3612+
serializer = TaskChunkSeriesSerializer(data={
3613+
'task_id': self.task.pk,
3614+
'start': '2010-02-24',
3615+
'end': '2010-01-01',
3616+
'rule': 'interval',
3617+
'interval_days': 10,
3618+
}, context=self.context)
3619+
self.assertFalse(
3620+
serializer.is_valid())
3621+
self.assertSetEqual(
3622+
set(serializer.errors.keys()),
3623+
{
3624+
'start',
3625+
'end',
3626+
})
3627+
3628+
def test_validation_update_start_after_end(self):
3629+
instance = TaskChunkSeries.objects.create(
3630+
task=self.task,
3631+
start=date(2010, 2, 24),
3632+
rule='interval',
3633+
interval_days=10)
3634+
3635+
serializer = TaskChunkSeriesSerializer(instance=instance, data={
3636+
'task_id': self.task.pk,
3637+
'start': '2010-02-24',
3638+
'end': '2010-01-01',
3639+
'rule': 'interval',
3640+
'interval_days': 10,
3641+
}, context=self.context)
3642+
self.assertFalse(
3643+
serializer.is_valid())
3644+
self.assertSetEqual(
3645+
set(serializer.errors.keys()),
3646+
{
3647+
'start',
3648+
'end',
3649+
})
3650+
36113651

36123652
class TaskChunkSeriesViewSetTest(AuthenticatedApiTest):
36133653
def setUp(self):

0 commit comments

Comments
 (0)