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 | 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 | ... | ... |
... | ... | @@ -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) | ... | ... |