failing tests with different types of arguments for 'updated_fields'

This commit is contained in:
Arseniy Panfilov 2020-09-30 20:09:02 -04:00 committed by Asif Saif Uddin
parent 1b3f7d6262
commit fdd3af34d9
4 changed files with 60 additions and 28 deletions

View file

@ -2,3 +2,4 @@ pytest==6.0.2
pytest-django==3.10.0
psycopg2-binary==2.8.6
pytest-cov==2.10.1
parameterized==0.7.4

View file

@ -89,7 +89,7 @@ class InheritanceManagerTestChild4(InheritanceManagerTestParent):
class TimeStamp(TimeStampedModel):
pass
test_field = models.PositiveSmallIntegerField(default=0)
class TimeFrame(TimeFramedModel):

View file

@ -1,8 +1,8 @@
from datetime import datetime, timedelta
from freezegun import freeze_time
from django.test import TestCase
from freezegun import freeze_time
from parameterized import parameterized
from tests.models import TimeStamp
@ -90,31 +90,62 @@ class TimeStampedModelTests(TestCase):
self.assertEqual(t1.created, different_date2)
self.assertNotEqual(t1.modified, different_date2)
self.assertNotEqual(t1.modified, different_date)
def test_save_with_update_fields_overrides_modified_provided(self):
'''
@parameterized.expand([
('list', ['modified']),
('tuple', ('modified',)),
('set', {'modified'}),
])
def test_save_with_update_fields_overrides_modified_provided_within_a(self, _, update_fields):
"""
Tests if the save method updated modified field
accordingly when update_fields is used as an argument
and modified is provided
'''
with freeze_time(datetime(2020,1,1)):
"""
with freeze_time(datetime(2020, 1, 1)):
t1 = TimeStamp.objects.create()
with freeze_time(datetime(2020,1,2)):
t1.save(update_fields=['modified'])
self.assertEqual(t1.modified, datetime(2020,1,2))
def test_save_with_update_fields_overrides_modified_not_provided(self):
'''
Tests if the save method updated modified field
accordingly when update_fields is used as an argument
and modified is not provided
'''
with freeze_time(datetime(2020,1,1)):
with freeze_time(datetime(2020, 1, 2)):
t1.save(update_fields=update_fields)
self.assertEqual(t1.modified, datetime(2020, 1, 2))
@parameterized.expand([
('list', ['test_field']),
('tuple', ('test_field',)),
('set', {'test_field'}),
])
def test_save_with_update_fields_updates_modified_even_when_it_is_not_included_in_a(self, _, update_fields):
with freeze_time(datetime(2020, 1, 1)):
t1 = TimeStamp.objects.create()
with freeze_time(datetime(2020,1,2)):
t1.save(update_fields=[])
self.assertEqual(t1.modified, datetime(2020,1,2))
with freeze_time(datetime(2020, 1, 2)):
t1.save(update_fields=update_fields)
self.assertEqual(t1.modified, datetime(2020, 1, 2))
@parameterized.expand([
('list', []),
('tuple', ()),
('set', {}),
])
def test_save_is_skipped_for_empty_update_fields_iterable(self, _, update_fields):
with freeze_time(datetime(2020, 1, 1)):
t1 = TimeStamp.objects.create()
with freeze_time(datetime(2020, 1, 2)):
t1.test_field = 1
t1.save(update_fields=update_fields)
t1.refresh_from_db()
self.assertEqual(t1.test_field, 0)
self.assertEqual(t1.modified, datetime(2020, 1, 1))
def test_save_updates_modified_value_when_update_fields_explicitly_set_to_none(self):
with freeze_time(datetime(2020, 1, 1)):
t1 = TimeStamp.objects.create()
with freeze_time(datetime(2020, 1, 2)):
t1.save(update_fields=None)
self.assertEqual(t1.modified, datetime(2020, 1, 2))

View file

@ -5,13 +5,13 @@ envlist =
[testenv]
deps =
freezegun==0.3.12
-rrequirements-test.txt
django22: Django==2.2.*
django21: Django==2.1.*
django30: Django==3.0.*
django31: Django==3.1.*
djangotrunk: https://github.com/django/django/archive/master.tar.gz
freezegun == 0.3.12
-rrequirements-test.txt
ignore_outcome =
djangotrunk: True
passenv =