Commit 0696cbe8661901382a72e27414a196b43de64365

Authored by Macartur Sousa
1 parent d4ce8bbf

Adding tests and refactoring plugins models

Signed-off-by: Macartur Sousa <macartur.sc@gmail.com>
colab/plugins/models.py
1 1 from django.db import models
2   -from django.utils.timezone import datetime
  2 +from django.utils import timezone
3 3  
4 4  
5 5 class TimeStampPlugin(models.Model):
... ... @@ -8,18 +8,19 @@ class TimeStampPlugin(models.Model):
8 8 '''
9 9 id = models.IntegerField(primary_key=True)
10 10 name = models.CharField(max_length=255, unique=True, null=False)
11   - timestamp = models.DateTimeField(default=datetime.min, blank=True)
  11 + timestamp = models.DateTimeField(default=timezone.datetime.min, blank=True)
12 12  
13 13 @classmethod
14 14 def update_timestamp(cls, class_name, **kwargs):
15   - instance = TimeStampPlugin.objects.filter(name=class_name)[0]
  15 + instance = TimeStampPlugin.objects.get_or_create(name=class_name)[0]
16 16 last_updated = kwargs.get('last_updated', '')
17 17  
18 18 if last_updated:
19   - instance.timestamp = datetime.strptime(last_updated,
20   - "%Y/%m/%d %H:%M:%S")
  19 + format = "%Y/%m/%d %H:%M:%S"
  20 + instance.timestamp = timezone.datetime.strptime(last_updated,
  21 + format)
21 22 else:
22   - instance.timestamp = datetime.now()
  23 + instance.timestamp = timezone.datetime.now()
23 24 instance.save()
24 25  
25 26 @classmethod
... ...
colab/plugins/tests/__init__.py 0 → 100644
colab/plugins/tests/test_timestamp.py 0 → 100644
... ... @@ -0,0 +1,32 @@
  1 +import mock
  2 +
  3 +from django.test import TestCase
  4 +from django.utils import timezone
  5 +from colab.plugins.models import TimeStampPlugin
  6 +
  7 +
  8 +class UserTest(TestCase):
  9 +
  10 + def test_update_timestamp_without_last_updated(self):
  11 + result = timezone.datetime(2009, 1, 1).replace(tzinfo=timezone.utc)
  12 + with mock.patch.object(timezone, 'datetime',
  13 + mock.Mock(wraps=timezone.datetime)) as mock_:
  14 + mock_.now.return_value = result
  15 + TimeStampPlugin.get_last_updated('TestPluginUpdate')
  16 + TimeStampPlugin.update_timestamp('TestPluginUpdate')
  17 + timestamp = TimeStampPlugin.get_last_updated('TestPluginUpdate')
  18 + self.assertEquals(result, timestamp)
  19 +
  20 + def test_update_timestamp_with_last_updated(self):
  21 + TimeStampPlugin.get_last_updated('TestPluginUpdate')
  22 + date = '2015/12/23 00:00:00'
  23 + TimeStampPlugin.update_timestamp('TestPluginUpdate', last_updated=date)
  24 +
  25 + timestamp = TimeStampPlugin.get_last_updated('TestPluginUpdate')
  26 + result = timezone.datetime.strptime(date, "%Y/%m/%d %H:%M:%S")\
  27 + .replace(tzinfo=timezone.utc)
  28 + self.assertEquals(timestamp, result)
  29 +
  30 + def test_first_get_last_update(self):
  31 + timestamp = TimeStampPlugin.get_last_updated('Test')
  32 + self.assertEqual(timezone.datetime.min, timestamp)
... ...