1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2012 Raphaƫl Barrois
try: # pragma: no cover
import unittest2 as unittest
except ImportError: # pragma: no cover
import unittest
import semantic_version
try: # pragma: no cover
from django.conf import settings
django_loaded = True
except ImportError: # pragma: no cover
django_loaded = False
if django_loaded: # pragma: no cover
if not settings.configured:
settings.configure(
DATABASES={
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'tests/db/test.sqlite',
}
},
INSTALLED_APPS=[
'tests.django_test_app',
]
)
from django_test_app import models
from django.core import serializers
@unittest.skipIf(not django_loaded, "Django not installed")
class DjangoFieldTestCase(unittest.TestCase):
def test_version(self):
obj = models.VersionModel(version='0.1.1', spec='>0.1.0', speclist='==0.1.1,!=0.1.1-alpha')
self.assertEqual(semantic_version.Version('0.1.1'), obj.version)
self.assertEqual(semantic_version.Spec('>0.1.0'), obj.spec)
self.assertEqual(semantic_version.SpecList('==0.1.1,!=0.1.1-alpha'), obj.speclist)
alt_obj = models.VersionModel(version=obj.version, spec=obj.spec, speclist=obj.speclist)
self.assertEqual(semantic_version.Version('0.1.1'), alt_obj.version)
self.assertEqual(semantic_version.Spec('>0.1.0'), alt_obj.spec)
self.assertEqual(semantic_version.SpecList('==0.1.1,!=0.1.1-alpha'), alt_obj.speclist)
self.assertEqual(obj.spec, alt_obj.spec)
self.assertEqual(obj.version, alt_obj.version)
self.assertEqual(obj.speclist, alt_obj.speclist)
def test_invalid_input(self):
self.assertRaises(ValueError, models.VersionModel,
version='0.1.1', spec='blah', speclist='==0.1.1,!=0.1.1-alpha')
self.assertRaises(ValueError, models.VersionModel,
version='0.1', spec='>0.1.1', speclist='==0.1.1,!=0.1.1-alpha')
self.assertRaises(ValueError, models.VersionModel,
version='0.1.1', spec='>0.1.1', speclist='==0,!=0.2')
def test_partial(self):
obj = models.PartialVersionModel(partial='0.1.0')
self.assertEqual(semantic_version.Version('0.1.0', partial=True), obj.partial)
self.assertIsNone(obj.optional)
self.assertIsNone(obj.optional_spec)
self.assertIsNone(obj.optional_speclist)
# Copy values to another model
alt_obj = models.PartialVersionModel(
partial=obj.partial,
optional=obj.optional,
optional_spec=obj.optional_spec,
optional_speclist=obj.optional_speclist,
)
self.assertEqual(semantic_version.Version('0.1.0', partial=True), alt_obj.partial)
self.assertEqual(obj.partial, alt_obj.partial)
self.assertIsNone(obj.optional)
self.assertIsNone(obj.optional_spec)
self.assertIsNone(obj.optional_speclist)
def test_serialization(self):
o1 = models.VersionModel(version='0.1.1', spec='<0.2.4-rc42',
speclist='==0.1.1,!=0.1.1-alpha')
o2 = models.VersionModel(version='0.4.3-rc3+build3', spec='==0.4.3',
speclist='<=0.1.1-rc2,!=0.1.1-rc1')
data = serializers.serialize('json', [o1, o2])
obj1, obj2 = serializers.deserialize('json', data)
self.assertEqual(o1, obj1.object)
self.assertEqual(o2, obj2.object)
def test_serialization_partial(self):
o1 = models.PartialVersionModel(partial='0.1.1', optional='0.2.4-rc42',
optional_spec=None, optional_speclist=None)
o2 = models.PartialVersionModel(partial='0.4.3-rc3+build3', optional='',
optional_spec='==1.1.0', optional_speclist='==0.1.1,!=0.1.1-alpha')
data = serializers.serialize('json', [o1, o2])
obj1, obj2 = serializers.deserialize('json', data)
self.assertEqual(o1, obj1.object)
self.assertEqual(o2, obj2.object)
if django_loaded:
from django.test import TestCase
from django.test.simple import DjangoTestSuiteRunner
class DbInteractingTestCase(TestCase):
@classmethod
def setUpClass(cls):
cls.old_state = DjangoTestSuiteRunner().setup_databases()
@classmethod
def tearDownClass(cls):
DjangoTestSuiteRunner().teardown_databases(cls.old_state)
def test_db_interaction(self):
o1 = models.VersionModel(version='0.1.1', spec='<0.2.4-rc42')
o2 = models.VersionModel(version='0.4.3-rc3+build3', spec='==0.4.3')
o1.save()
o2.save()
obj1 = models.VersionModel.objects.get(pk=o1.pk)
self.assertEqual(o1.version, obj1.version)
obj2 = models.VersionModel.objects.get(pk=o2.pk)
self.assertEqual(o2.version, obj2.version)
else: # pragma: no cover
pass
|