File: test_sequence.py

package info (click to toggle)
tryton-server 3.4.0-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 4,448 kB
  • sloc: python: 28,657; xml: 3,996; sql: 328; sh: 150; makefile: 82
file content (115 lines) | stat: -rw-r--r-- 4,454 bytes parent folder | download | duplicates (2)
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
# -*- 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 unittest
import datetime
from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
        install_module
from trytond.transaction import Transaction
from trytond.exceptions import UserError


class SequenceTestCase(unittest.TestCase):
    'Test Sequence'

    def setUp(self):
        install_module('tests')
        self.sequence = POOL.get('ir.sequence')

    def test0010incremental(self):
        'Test incremental'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            sequence, = self.sequence.create([{
                        'name': 'Test incremental',
                        'code': 'test',
                        'prefix': '',
                        'suffix': '',
                        'type': 'incremental',
                        }])
            self.assertEqual(self.sequence.get_id(sequence), '1')

            self.sequence.write([sequence], {
                    'number_increment': 10,
                    })
            self.assertEqual(self.sequence.get_id(sequence), '2')
            self.assertEqual(self.sequence.get_id(sequence), '12')

            self.sequence.write([sequence], {
                    'padding': 3,
                    })
            self.assertEqual(self.sequence.get_id(sequence), '022')

            transaction.cursor.rollback()

    def test0020decimal_timestamp(self):
        'Test Decimal Timestamp'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            sequence, = self.sequence.create([{
                        'name': 'Test decimal timestamp',
                        'code': 'test',
                        'prefix': '',
                        'suffix': '',
                        'type': 'decimal timestamp',
                        }])
            timestamp = self.sequence.get_id(sequence)
            self.assertEqual(timestamp, str(sequence.last_timestamp))

            self.assertNotEqual(self.sequence.get_id(sequence), timestamp)

            next_timestamp = self.sequence._timestamp(sequence)
            self.assertRaises(UserError, self.sequence.write, [sequence], {
                    'last_timestamp': next_timestamp + 100,
                    })

            transaction.cursor.rollback()

    def test0030hexadecimal_timestamp(self):
        'Test Hexadecimal Timestamp'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            sequence, = self.sequence.create([{
                        'name': 'Test hexadecimal timestamp',
                        'code': 'test',
                        'prefix': '',
                        'suffix': '',
                        'type': 'hexadecimal timestamp',
                        }])
            timestamp = self.sequence.get_id(sequence)
            self.assertEqual(timestamp,
                hex(int(sequence.last_timestamp))[2:].upper())

            self.assertNotEqual(self.sequence.get_id(sequence), timestamp)

            next_timestamp = self.sequence._timestamp(sequence)
            self.assertRaises(UserError, self.sequence.write, [sequence], {
                    'last_timestamp': next_timestamp + 100,
                    })

            transaction.cursor.rollback()

    def test0040prefix_suffix(self):
        'Test prefix/suffix'
        with Transaction().start(DB_NAME, USER, context=CONTEXT):
            sequence, = self.sequence.create([{
                        'name': 'Test incremental',
                        'code': 'test',
                        'prefix': 'prefix/',
                        'suffix': '/suffix',
                        'type': 'incremental',
                        }])
            self.assertEqual(self.sequence.get_id(sequence),
                'prefix/1/suffix')

            self.sequence.write([sequence], {
                    'prefix': '${year}-${month}-${day}/',
                    'suffix': '/${day}.${month}.${year}',
                    })
            with Transaction().set_context(date=datetime.date(2010, 8, 15)):
                self.assertEqual(self.sequence.get_id(sequence),
                    '2010-08-15/2/15.08.2010')


def suite():
    return unittest.TestLoader().loadTestsFromTestCase(SequenceTestCase)