Added unit tests for date field
This commit is contained in:
1 parent
5b3e41f0ab
commit
b82bb6eecb
3 files changed
+302
-1
No files matched your search
@@ -1,5 +1,7 @@
|
||||
#This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
#this repository contains the full copyright notices and license terms.
|
||||
import datetime
|
||||
|
||||
try:
|
||||
import hashlib
|
||||
except ImportError:
|
||||
@@ -79,7 +81,17 @@ class Date(Field):
|
||||
|
||||
@staticmethod
|
||||
def sql_format(value):
|
||||
return value or None
|
||||
if not value:
|
||||
return None
|
||||
if isinstance(value, basestring):
|
||||
year, month, day = map(int, value.split("-", 2))
|
||||
return datetime.date(year, month, day)
|
||||
|
||||
assert(isinstance(value, datetime.date))
|
||||
# datetime must be tested separately because datetime is a
|
||||
# subclass of date:
|
||||
assert(not isinstance(value, datetime.datetime))
|
||||
return value
|
||||
|
||||
|
||||
class DateTime(Field):
|
||||
|
||||
@@ -15,6 +15,7 @@ from decimal import Decimal
|
||||
from trytond import pysocket
|
||||
from trytond.tools import reduce_ids, safe_eval
|
||||
from lxml import etree
|
||||
import datetime
|
||||
|
||||
ADMIN_PASSWORD = 'admin'
|
||||
HOST = '127.0.0.1'
|
||||
@@ -166,6 +167,10 @@ class FieldsTestCase(unittest.TestCase):
|
||||
self.sha_default = RPCProxy('tests.sha_default')
|
||||
self.sha_required = RPCProxy('tests.sha_required')
|
||||
|
||||
self.date = RPCProxy('tests.date')
|
||||
self.date_default = RPCProxy('tests.date_default')
|
||||
self.date_required = RPCProxy('tests.date_required')
|
||||
|
||||
def test0010boolean(self):
|
||||
'''
|
||||
Test Boolean.
|
||||
@@ -1555,6 +1560,256 @@ class FieldsTestCase(unittest.TestCase):
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(sha_ids == [sha6_id])
|
||||
|
||||
def test0080date(self):
|
||||
'''
|
||||
Test Date.
|
||||
'''
|
||||
today = datetime.date(2009, 1, 1)
|
||||
tomorrow = today + datetime.timedelta(1)
|
||||
yesterday = today - datetime.timedelta(1)
|
||||
default_date = datetime.date(2000, 1, 1)
|
||||
|
||||
date1_id = self.date.create({
|
||||
'date': today,
|
||||
}, CONTEXT)
|
||||
self.assert_(date1_id)
|
||||
|
||||
date1 = self.date.read(date1_id, ['date'], CONTEXT)
|
||||
self.assert_(date1['date'] == today)
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '=', today),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '=', tomorrow),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '=', False),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '!=', today),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '!=', tomorrow),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '!=', False),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'in', [today]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'in', [tomorrow]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'in', [False]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'in', []),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'not in', [today]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'not in', [tomorrow]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'not in', [False]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'not in', []),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '<', tomorrow),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '<', yesterday),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '<', today),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '<=', today),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '<=', yesterday),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '<=', tomorrow),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '>', tomorrow),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '>', yesterday),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '>', today),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '>=', tomorrow),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '>=', yesterday),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '>=', today),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id])
|
||||
|
||||
date2_id = self.date.create({
|
||||
'date': yesterday,
|
||||
}, CONTEXT)
|
||||
self.assert_(date2_id)
|
||||
|
||||
date2 = self.date.read(date2_id, ['date'], CONTEXT)
|
||||
self.assert_(date2['date'] == yesterday)
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', '=', yesterday),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date2_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'in', [yesterday, today]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [date1_id, date2_id])
|
||||
|
||||
date_ids = self.date.search([
|
||||
('date', 'not in', [yesterday, today]),
|
||||
], 0, None, None, CONTEXT)
|
||||
self.assert_(date_ids == [])
|
||||
|
||||
date3_id = self.date.create({}, CONTEXT)
|
||||
self.assert_(date3_id)
|
||||
|
||||
date3 = self.date.read(date3_id, ['date'], CONTEXT)
|
||||
self.assert_(date3['date'] == None)
|
||||
|
||||
date4_id = self.date_default.create({}, CONTEXT)
|
||||
self.assert_(date4_id)
|
||||
|
||||
date4 = self.date_default.read(date4_id, ['date'], CONTEXT)
|
||||
self.assert_(date4['date'] == default_date)
|
||||
|
||||
self.date.write(date1_id, {
|
||||
'date': yesterday,
|
||||
}, CONTEXT)
|
||||
date1 = self.date.read(date1_id, ['date'], CONTEXT)
|
||||
self.assert_(date1['date'] == yesterday)
|
||||
|
||||
self.date.write(date2_id, {
|
||||
'date': today,
|
||||
}, CONTEXT)
|
||||
date2 = self.date.read(date2_id, ['date'], CONTEXT)
|
||||
self.assert_(date2['date'] == today)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.create, {
|
||||
'date': 'test',
|
||||
}, CONTEXT)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.write, date1_id, {
|
||||
'date': 'test',
|
||||
}, CONTEXT)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.create, {
|
||||
'date': 1,
|
||||
}, CONTEXT)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.write, date1_id, {
|
||||
'date': 1,
|
||||
}, CONTEXT)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.create, {
|
||||
'date': datetime.datetime.now(),
|
||||
}, CONTEXT)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.write, date1_id, {
|
||||
'date': datetime.datetime.now(),
|
||||
}, CONTEXT)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.create, {
|
||||
'date': '2009-13-01',
|
||||
}, CONTEXT)
|
||||
|
||||
self.failUnlessRaises(Exception, self.date.write, date1_id, {
|
||||
'date': '2009-02-29',
|
||||
}, CONTEXT)
|
||||
|
||||
date5_id = self.date.create({
|
||||
'date': '2009-01-01',
|
||||
}, CONTEXT)
|
||||
self.assert_(date5_id)
|
||||
date5 = self.date.read(date5_id, ['date'], CONTEXT)
|
||||
self.assert_(date5['date'] == datetime.date(2009, 1, 1))
|
||||
|
||||
self.failUnlessRaises(Exception,self.date_required.create, {}, CONTEXT)
|
||||
|
||||
date6_id = self.date_required.create({
|
||||
'date': today,
|
||||
}, CONTEXT)
|
||||
self.assert_(date6_id)
|
||||
|
||||
date7_id = self.date.create({
|
||||
'date': None,
|
||||
}, CONTEXT)
|
||||
self.assert_(date7_id)
|
||||
|
||||
date8_id = self.date.create({
|
||||
'date': False,
|
||||
}, CONTEXT)
|
||||
self.assert_(date8_id)
|
||||
|
||||
|
||||
class ModelViewTestCase(unittest.TestCase):
|
||||
'''
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.model import ModelSQL, fields
|
||||
import datetime
|
||||
|
||||
|
||||
class Boolean(ModelSQL):
|
||||
@@ -243,3 +244,36 @@ class ShaRequired(ModelSQL):
|
||||
required=True)
|
||||
|
||||
ShaRequired()
|
||||
|
||||
|
||||
class Date(ModelSQL):
|
||||
'Date'
|
||||
_name = 'tests.date'
|
||||
_description = __doc__
|
||||
date = fields.Date(string='Date', help='Test date',
|
||||
required=False)
|
||||
|
||||
Date()
|
||||
|
||||
|
||||
class DateDefault(ModelSQL):
|
||||
'Date Default'
|
||||
_name = 'tests.date_default'
|
||||
_description = __doc__
|
||||
date = fields.Date(string='Date', help='Test date',
|
||||
required=False)
|
||||
|
||||
def default_date(self, cursor, user, context=None):
|
||||
return datetime.date(2000, 1, 1)
|
||||
|
||||
DateDefault()
|
||||
|
||||
|
||||
class DateRequired(ModelSQL):
|
||||
'Date Required'
|
||||
_name = 'tests.date_required'
|
||||
_description = __doc__
|
||||
date = fields.Date(string='Date', help='Test date',
|
||||
required=True)
|
||||
|
||||
DateRequired()
|
||||
Reference in new issue
Block a user