Skip to content

Commit

Permalink
TaskChunkSeries: Disallow start date to be in past
Browse files Browse the repository at this point in the history
  • Loading branch information
wichmannpas committed Sep 10, 2018
1 parent 46c1ab1 commit 3f39259
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
7 changes: 5 additions & 2 deletions task/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,13 +219,16 @@ def validate_rule(self, value: str) -> str:
'changing the rule of an existing series is not allowed')
return value

def validate_start(self, value: str) -> str:
def validate_start(self, value: date) -> str:
if self.instance and value != self.instance.start:
raise ValidationError(
'changing the start of an existing series is not allowed')
elif not self.instance and value < date.today():
raise ValidationError(
'the start date is not allowed to be in the past')
return value

def validate_task_id(self, value: str) -> str:
def validate_task_id(self, value: int) -> str:
if self.instance and value != self.instance.task_id:
raise ValidationError(
'changing the task of an existing series is not allowed')
Expand Down
22 changes: 22 additions & 0 deletions task/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3282,6 +3282,7 @@ def setUp(self):
'request': self.request,
}

@freeze_time('2010-05-03')
def test_validation_invalid_rule(self):
serializer = TaskChunkSeriesSerializer(data={
'task_id': self.task.pk,
Expand All @@ -3294,6 +3295,7 @@ def test_validation_invalid_rule(self):
set(serializer.errors.keys()),
{'rule'})

@freeze_time('2010-05-03')
def test_validation_interval(self):
serializer = TaskChunkSeriesSerializer(data={
'task_id': self.task.pk,
Expand Down Expand Up @@ -3339,6 +3341,7 @@ def test_validation_interval(self):
self.assertTrue(
serializer.is_valid())

@freeze_time('2010-05-03')
def test_validation_monthly(self):
serializer = TaskChunkSeriesSerializer(data={
'task_id': self.task.pk,
Expand Down Expand Up @@ -3402,6 +3405,7 @@ def test_validation_monthly(self):
self.assertTrue(
serializer.is_valid())

@freeze_time('2008-01-03')
def test_validation_monthly_last_day_of_month(self):
serializer = TaskChunkSeriesSerializer(data={
'task_id': self.task.pk,
Expand Down Expand Up @@ -3457,6 +3461,7 @@ def test_validation_monthly_last_day_of_month(self):
set(serializer.errors.keys()),
{'monthly_day'})

@freeze_time('2010-05-03')
def test_validation_monthlyweekday(self):
serializer = TaskChunkSeriesSerializer(data={
'task_id': self.task.pk,
Expand Down Expand Up @@ -3635,6 +3640,23 @@ def test_validation_update_change_end(self):
instance.end,
date(2010, 5, 1))

@freeze_time('2010-01-03')
def test_validation_create_start_past(self):
serializer = TaskChunkSeriesSerializer(data={
'task_id': self.task.pk,
'start': '2010-01-01', # in past
'rule': 'interval',
'interval_days': 10,
}, context=self.context)
self.assertFalse(
serializer.is_valid())
self.assertSetEqual(
set(serializer.errors.keys()),
{
'start',
})

@freeze_time('2010-01-03')
def test_validation_create_start_after_end(self):
serializer = TaskChunkSeriesSerializer(data={
'task_id': self.task.pk,
Expand Down

0 comments on commit 3f39259

Please sign in to comment.