From 0696cbe8661901382a72e27414a196b43de64365 Mon Sep 17 00:00:00 2001 From: Macartur Sousa Date: Thu, 26 Nov 2015 09:23:21 -0200 Subject: [PATCH] Adding tests and refactoring plugins models --- colab/plugins/models.py | 13 +++++++------ colab/plugins/tests/__init__.py | 0 colab/plugins/tests/test_timestamp.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 colab/plugins/tests/__init__.py create mode 100644 colab/plugins/tests/test_timestamp.py diff --git a/colab/plugins/models.py b/colab/plugins/models.py index a7d70b0..539f9e3 100644 --- a/colab/plugins/models.py +++ b/colab/plugins/models.py @@ -1,5 +1,5 @@ from django.db import models -from django.utils.timezone import datetime +from django.utils import timezone class TimeStampPlugin(models.Model): @@ -8,18 +8,19 @@ class TimeStampPlugin(models.Model): ''' id = models.IntegerField(primary_key=True) name = models.CharField(max_length=255, unique=True, null=False) - timestamp = models.DateTimeField(default=datetime.min, blank=True) + timestamp = models.DateTimeField(default=timezone.datetime.min, blank=True) @classmethod def update_timestamp(cls, class_name, **kwargs): - instance = TimeStampPlugin.objects.filter(name=class_name)[0] + instance = TimeStampPlugin.objects.get_or_create(name=class_name)[0] last_updated = kwargs.get('last_updated', '') if last_updated: - instance.timestamp = datetime.strptime(last_updated, - "%Y/%m/%d %H:%M:%S") + format = "%Y/%m/%d %H:%M:%S" + instance.timestamp = timezone.datetime.strptime(last_updated, + format) else: - instance.timestamp = datetime.now() + instance.timestamp = timezone.datetime.now() instance.save() @classmethod diff --git a/colab/plugins/tests/__init__.py b/colab/plugins/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/colab/plugins/tests/__init__.py diff --git a/colab/plugins/tests/test_timestamp.py b/colab/plugins/tests/test_timestamp.py new file mode 100644 index 0000000..1b3aa5b --- /dev/null +++ b/colab/plugins/tests/test_timestamp.py @@ -0,0 +1,32 @@ +import mock + +from django.test import TestCase +from django.utils import timezone +from colab.plugins.models import TimeStampPlugin + + +class UserTest(TestCase): + + def test_update_timestamp_without_last_updated(self): + result = timezone.datetime(2009, 1, 1).replace(tzinfo=timezone.utc) + with mock.patch.object(timezone, 'datetime', + mock.Mock(wraps=timezone.datetime)) as mock_: + mock_.now.return_value = result + TimeStampPlugin.get_last_updated('TestPluginUpdate') + TimeStampPlugin.update_timestamp('TestPluginUpdate') + timestamp = TimeStampPlugin.get_last_updated('TestPluginUpdate') + self.assertEquals(result, timestamp) + + def test_update_timestamp_with_last_updated(self): + TimeStampPlugin.get_last_updated('TestPluginUpdate') + date = '2015/12/23 00:00:00' + TimeStampPlugin.update_timestamp('TestPluginUpdate', last_updated=date) + + timestamp = TimeStampPlugin.get_last_updated('TestPluginUpdate') + result = timezone.datetime.strptime(date, "%Y/%m/%d %H:%M:%S")\ + .replace(tzinfo=timezone.utc) + self.assertEquals(timestamp, result) + + def test_first_get_last_update(self): + timestamp = TimeStampPlugin.get_last_updated('Test') + self.assertEqual(timezone.datetime.min, timestamp) -- libgit2 0.21.2