Initial import from Docker volume
This commit is contained in:
160
tests/test_sequence.py
Executable file
160
tests/test_sequence.py
Executable file
@@ -0,0 +1,160 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# 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
|
||||
import unittest
|
||||
|
||||
from trytond.ir.sequence import LastTimestampError
|
||||
from trytond.pool import Pool
|
||||
from trytond.tests.test_tryton import activate_module, with_transaction
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class SequenceTestCase(unittest.TestCase):
|
||||
'Test Sequence'
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
activate_module('tests')
|
||||
|
||||
@staticmethod
|
||||
def get_model():
|
||||
pool = Pool()
|
||||
return pool.get('ir.sequence')
|
||||
|
||||
@with_transaction()
|
||||
def test_incremental(self):
|
||||
'Test incremental'
|
||||
pool = Pool()
|
||||
Sequence = self.get_model()
|
||||
SequenceType = pool.get('ir.sequence.type')
|
||||
|
||||
sequence_type, = SequenceType.search([
|
||||
('name', '=', "Test"),
|
||||
], limit=1)
|
||||
sequence, = Sequence.create([{
|
||||
'name': 'Test incremental',
|
||||
'sequence_type': sequence_type.id,
|
||||
'prefix': '',
|
||||
'suffix': '',
|
||||
'type': 'incremental',
|
||||
}])
|
||||
self.assertEqual(sequence.number_next, 1)
|
||||
self.assertEqual(sequence.preview, '1')
|
||||
self.assertEqual(sequence.get(), '1')
|
||||
|
||||
Sequence.write([sequence], {
|
||||
'number_increment': 10,
|
||||
})
|
||||
self.assertEqual(sequence.number_next, 2)
|
||||
self.assertEqual(sequence.preview, '2')
|
||||
self.assertEqual(sequence.get(), '2')
|
||||
self.assertEqual(sequence.preview, '12')
|
||||
self.assertEqual(sequence.get(), '12')
|
||||
|
||||
Sequence.write([sequence], {
|
||||
'padding': 3,
|
||||
})
|
||||
self.assertEqual(sequence.number_next, 22)
|
||||
self.assertEqual(sequence.preview, '022')
|
||||
self.assertEqual(sequence.get(), '022')
|
||||
|
||||
@with_transaction()
|
||||
def test_decimal_timestamp(self):
|
||||
'Test Decimal Timestamp'
|
||||
pool = Pool()
|
||||
Sequence = self.get_model()
|
||||
SequenceType = pool.get('ir.sequence.type')
|
||||
|
||||
sequence_type, = SequenceType.search([
|
||||
('name', '=', "Test"),
|
||||
], limit=1)
|
||||
sequence, = Sequence.create([{
|
||||
'name': 'Test decimal timestamp',
|
||||
'sequence_type': sequence_type.id,
|
||||
'prefix': '',
|
||||
'suffix': '',
|
||||
'type': 'decimal timestamp',
|
||||
}])
|
||||
self.assertTrue(sequence.preview)
|
||||
timestamp = sequence.get()
|
||||
self.assertEqual(timestamp, str(sequence.last_timestamp))
|
||||
|
||||
self.assertEqual(sequence.number_next, None)
|
||||
|
||||
self.assertNotEqual(sequence.get(), timestamp)
|
||||
|
||||
next_timestamp = Sequence._timestamp(sequence)
|
||||
self.assertRaises(LastTimestampError, Sequence.write, [sequence], {
|
||||
'last_timestamp': next_timestamp + 100,
|
||||
})
|
||||
|
||||
@with_transaction()
|
||||
def test_hexadecimal_timestamp(self):
|
||||
'Test Hexadecimal Timestamp'
|
||||
pool = Pool()
|
||||
Sequence = self.get_model()
|
||||
SequenceType = pool.get('ir.sequence.type')
|
||||
|
||||
sequence_type, = SequenceType.search([
|
||||
('name', '=', "Test"),
|
||||
], limit=1)
|
||||
sequence, = Sequence.create([{
|
||||
'name': 'Test hexadecimal timestamp',
|
||||
'sequence_type': sequence_type.id,
|
||||
'prefix': '',
|
||||
'suffix': '',
|
||||
'type': 'hexadecimal timestamp',
|
||||
}])
|
||||
self.assertTrue(sequence.preview)
|
||||
timestamp = sequence.get()
|
||||
self.assertEqual(timestamp,
|
||||
hex(int(sequence.last_timestamp))[2:].upper())
|
||||
|
||||
self.assertEqual(sequence.number_next, None)
|
||||
|
||||
self.assertNotEqual(sequence.get(), timestamp)
|
||||
|
||||
next_timestamp = Sequence._timestamp(sequence)
|
||||
self.assertRaises(LastTimestampError, Sequence.write, [sequence], {
|
||||
'last_timestamp': next_timestamp + 100,
|
||||
})
|
||||
|
||||
@with_transaction()
|
||||
def test_prefix_suffix(self):
|
||||
'Test prefix/suffix'
|
||||
pool = Pool()
|
||||
Sequence = self.get_model()
|
||||
SequenceType = pool.get('ir.sequence.type')
|
||||
|
||||
sequence_type, = SequenceType.search([
|
||||
('name', '=', "Test"),
|
||||
], limit=1)
|
||||
sequence, = Sequence.create([{
|
||||
'name': 'Test incremental',
|
||||
'sequence_type': sequence_type.id,
|
||||
'prefix': 'prefix/',
|
||||
'suffix': '/suffix',
|
||||
'type': 'incremental',
|
||||
}])
|
||||
self.assertEqual(sequence.preview, 'prefix/1/suffix')
|
||||
self.assertEqual(sequence.get(),
|
||||
'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(sequence).preview, '2010-08-15/2/15.08.2010')
|
||||
self.assertEqual(sequence.get(), '2010-08-15/2/15.08.2010')
|
||||
|
||||
|
||||
class SequenceStrictTestCase(SequenceTestCase):
|
||||
"Test Sequence Strict"
|
||||
|
||||
@staticmethod
|
||||
def get_model():
|
||||
pool = Pool()
|
||||
return pool.get('ir.sequence.strict')
|
||||
Reference in New Issue
Block a user