File: test_modelsingleton.py

package info (click to toggle)
tryton-server 3.4.0-3%2Bdeb8u3
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 4,600 kB
  • ctags: 3,933
  • sloc: python: 28,679; xml: 3,996; sql: 328; sh: 150; makefile: 82
file content (128 lines) | stat: -rw-r--r-- 4,568 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
116
117
118
119
120
121
122
123
124
125
126
127
128
# -*- 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
from datetime import datetime
from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
        install_module
from trytond.transaction import Transaction


class ModelSingletonTestCase(unittest.TestCase):
    'Test ModelSingleton'

    def setUp(self):
        install_module('tests')
        self.singleton = POOL.get('test.singleton')

    def test0010read(self):
        'Test read method'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            singleton, = self.singleton.read([1], ['name'])
            self.assert_(singleton['name'] == 'test')
            self.assert_(singleton['id'] == 1)

            singleton, = self.singleton.read([1], ['name'])
            self.assert_(singleton['name'] == 'test')
            self.assert_(singleton['id'] == 1)

            singleton, = self.singleton.read([1], [
                'create_uid',
                'create_uid.rec_name',
                'create_date',
                'write_uid',
                'write_date',
                ])
            self.assertEqual(singleton['create_uid'], USER)
            self.assertEqual(singleton['create_uid.rec_name'], 'Administrator')
            self.assert_(isinstance(singleton['create_date'], datetime))
            self.assertEqual(singleton['write_uid'], None)
            self.assertEqual(singleton['write_date'], None)

            transaction.cursor.rollback()

    def test0020create(self):
        'Test create method'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            singleton, = self.singleton.create([{'name': 'bar'}])
            self.assert_(singleton)
            self.assertEqual(singleton.name, 'bar')

            singleton2, = self.singleton.create([{'name': 'foo'}])
            self.assertEqual(singleton2, singleton)

            self.assertEqual(singleton.name, 'foo')

            singletons = self.singleton.search([])
            self.assertEqual(singletons, [singleton])

            transaction.cursor.rollback()

    def test0030copy(self):
        'Test copy method'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            singleton, = self.singleton.search([])

            singleton2, = self.singleton.copy([singleton])
            self.assertEqual(singleton2, singleton)

            singletons = self.singleton.search([])
            self.assertEqual(len(singletons), 1)

            singleton3, = self.singleton.copy([singleton], {'name': 'bar'})
            self.assertEqual(singleton3, singleton)

            singletons = self.singleton.search([])
            self.assertEqual(len(singletons), 1)

            transaction.cursor.rollback()

    def test0040default_get(self):
        'Test default_get method'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            default = self.singleton.default_get(['name'])
            self.assertEqual(default, {'name': 'test'})

            default = self.singleton.default_get(['create_uid'])
            self.assertEqual(len(default), 2)

            default = self.singleton.default_get(['create_uid'],
                    with_rec_name=False)
            self.assertEqual(len(default), 1)

            self.singleton.create([{'name': 'bar'}])

            default = self.singleton.default_get(['name'])
            self.assertEqual(default, {'name': 'bar'})

            default = self.singleton.default_get(['create_uid'])
            self.assertEqual(len(default), 2)

            default = self.singleton.default_get(['create_uid'],
                    with_rec_name=False)
            self.assertEqual(len(default), 1)

            transaction.cursor.rollback()

    def test0050search(self):
        'Test search method'
        with Transaction().start(DB_NAME, USER,
                context=CONTEXT) as transaction:
            singletons = self.singleton.search([])
            self.assertEqual(map(int, singletons), [1])

            singletons = self.singleton.search([])
            self.assertEqual(map(int, singletons), [1])

            count = self.singleton.search([], count=True)
            self.assertEqual(count, 1)

            transaction.cursor.rollback()


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