Commit 0696cbe8661901382a72e27414a196b43de64365
1 parent
d4ce8bbf
Exists in
master
and in
4 other branches
Adding tests and refactoring plugins models
Signed-off-by: Macartur Sousa <macartur.sc@gmail.com>
Showing
3 changed files
with
39 additions
and
6 deletions
Show diff stats
colab/plugins/models.py
1 | from django.db import models | 1 | from django.db import models |
2 | -from django.utils.timezone import datetime | 2 | +from django.utils import timezone |
3 | 3 | ||
4 | 4 | ||
5 | class TimeStampPlugin(models.Model): | 5 | class TimeStampPlugin(models.Model): |
@@ -8,18 +8,19 @@ class TimeStampPlugin(models.Model): | @@ -8,18 +8,19 @@ class TimeStampPlugin(models.Model): | ||
8 | ''' | 8 | ''' |
9 | id = models.IntegerField(primary_key=True) | 9 | id = models.IntegerField(primary_key=True) |
10 | name = models.CharField(max_length=255, unique=True, null=False) | 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 | @classmethod | 13 | @classmethod |
14 | def update_timestamp(cls, class_name, **kwargs): | 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 | last_updated = kwargs.get('last_updated', '') | 16 | last_updated = kwargs.get('last_updated', '') |
17 | 17 | ||
18 | if last_updated: | 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 | else: | 22 | else: |
22 | - instance.timestamp = datetime.now() | 23 | + instance.timestamp = timezone.datetime.now() |
23 | instance.save() | 24 | instance.save() |
24 | 25 | ||
25 | @classmethod | 26 | @classmethod |
@@ -0,0 +1,32 @@ | @@ -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) |