Files
tryton/trytond/tests/test_sequence.py
T

140 lines
4.5 KiB
Python
Raw Normal View History

2010-09-02 17:31:51 +02:00
# -*- coding: utf-8 -*-
2014-12-02 12:54:01 +01:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
2010-09-02 17:31:51 +02:00
import unittest
import datetime
from trytond.tests.test_tryton import activate_module, with_transaction
2010-09-02 17:31:51 +02:00
from trytond.transaction import Transaction
2016-02-06 19:10:35 +01:00
from trytond.pool import Pool
2018-12-29 14:19:08 +01:00
from trytond.ir.sequence import LastTimestampError
2010-09-02 17:31:51 +02:00
class SequenceTestCase(unittest.TestCase):
2014-01-12 19:58:22 +01:00
'Test Sequence'
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
@classmethod
def setUpClass(cls):
activate_module('tests')
2010-09-02 17:31:51 +02:00
2017-01-25 23:21:57 +01:00
@staticmethod
def get_model():
pool = Pool()
return pool.get('ir.sequence')
2016-02-06 19:10:35 +01:00
@with_transaction()
def test_incremental(self):
2014-01-12 19:58:22 +01:00
'Test incremental'
2017-01-25 23:21:57 +01:00
Sequence = self.get_model()
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
sequence, = Sequence.create([{
'name': 'Test incremental',
'code': 'test',
'prefix': '',
'suffix': '',
'type': 'incremental',
}])
2016-03-16 22:04:18 +01:00
self.assertEqual(sequence.number_next, 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(Sequence.get_id(sequence), '1')
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
Sequence.write([sequence], {
'number_increment': 10,
})
2016-03-16 22:04:18 +01:00
self.assertEqual(sequence.number_next, 2)
2016-02-06 19:10:35 +01:00
self.assertEqual(Sequence.get_id(sequence), '2')
self.assertEqual(Sequence.get_id(sequence), '12')
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
Sequence.write([sequence], {
'padding': 3,
})
2016-03-16 22:04:18 +01:00
self.assertEqual(sequence.number_next, 22)
2016-02-06 19:10:35 +01:00
self.assertEqual(Sequence.get_id(sequence), '022')
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
@with_transaction()
def test_decimal_timestamp(self):
2014-01-12 19:58:22 +01:00
'Test Decimal Timestamp'
2017-01-25 23:21:57 +01:00
Sequence = self.get_model()
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
sequence, = Sequence.create([{
'name': 'Test decimal timestamp',
'code': 'test',
'prefix': '',
'suffix': '',
'type': 'decimal timestamp',
}])
timestamp = Sequence.get_id(sequence)
self.assertEqual(timestamp, str(sequence.last_timestamp))
2010-09-02 17:31:51 +02:00
2016-03-16 22:04:18 +01:00
self.assertEqual(sequence.number_next, None)
2016-02-06 19:10:35 +01:00
self.assertNotEqual(Sequence.get_id(sequence), timestamp)
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
next_timestamp = Sequence._timestamp(sequence)
2018-12-29 14:19:08 +01:00
self.assertRaises(LastTimestampError, Sequence.write, [sequence], {
2016-02-06 19:10:35 +01:00
'last_timestamp': next_timestamp + 100,
})
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
@with_transaction()
def test_hexadecimal_timestamp(self):
2014-01-12 19:58:22 +01:00
'Test Hexadecimal Timestamp'
2017-01-25 23:21:57 +01:00
Sequence = self.get_model()
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
sequence, = Sequence.create([{
'name': 'Test hexadecimal timestamp',
'code': 'test',
'prefix': '',
'suffix': '',
'type': 'hexadecimal timestamp',
}])
timestamp = Sequence.get_id(sequence)
self.assertEqual(timestamp,
hex(int(sequence.last_timestamp))[2:].upper())
2010-09-02 17:31:51 +02:00
2016-03-16 22:04:18 +01:00
self.assertEqual(sequence.number_next, None)
2016-02-06 19:10:35 +01:00
self.assertNotEqual(Sequence.get_id(sequence), timestamp)
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
next_timestamp = Sequence._timestamp(sequence)
2018-12-29 14:19:08 +01:00
self.assertRaises(LastTimestampError, Sequence.write, [sequence], {
2016-02-06 19:10:35 +01:00
'last_timestamp': next_timestamp + 100,
})
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
@with_transaction()
def test_prefix_suffix(self):
2014-01-12 19:58:22 +01:00
'Test prefix/suffix'
2017-01-25 23:21:57 +01:00
Sequence = self.get_model()
2010-09-02 17:31:51 +02:00
2016-02-06 19:10:35 +01:00
sequence, = Sequence.create([{
'name': 'Test incremental',
'code': 'test',
'prefix': 'prefix/',
'suffix': '/suffix',
'type': 'incremental',
}])
self.assertEqual(Sequence.get_id(sequence),
'prefix/1/suffix')
Sequence.write([sequence], {
'prefix': '${year}-${month}-${day}/',
'suffix': '/${day}.${month}.${year}',
})
with Transaction().set_context(date=datetime.date(2010, 8, 15)):
self.assertEqual(Sequence.get_id(sequence),
'2010-08-15/2/15.08.2010')
2010-09-02 17:31:51 +02:00
2012-04-01 23:08:15 +02:00
2017-01-25 23:21:57 +01:00
class SequenceStrictTestCase(SequenceTestCase):
"Test Sequence Strict"
@staticmethod
def get_model():
pool = Pool()
return pool.get('ir.sequence.strict')
2010-09-02 17:31:51 +02:00
def suite():
2017-01-25 23:21:57 +01:00
suite_ = unittest.TestSuite()
suite_.addTests(unittest.TestLoader().loadTestsFromTestCase(
SequenceTestCase))
suite_.addTests(unittest.TestLoader().loadTestsFromTestCase(
SequenceStrictTestCase))
return suite_