File: test_validatorselector.py

package info (click to toggle)
sprox 0.6.4-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 480 kB
  • ctags: 1,040
  • sloc: python: 3,235; sh: 20; makefile: 6
file content (93 lines) | stat: -rw-r--r-- 2,827 bytes parent folder | download | duplicates (3)
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
from nose.tools import raises, eq_
from sprox.validatorselector import ValidatorSelector, SAValidatorSelector
from sprox.test.base import *
from formencode.validators  import *
from formencode.compound import All
from sqlalchemy import Column, Integer
from sqlalchemy.databases.oracle import *
from sprox.saormprovider import SAORMProvider
from types import NoneType

session = None
engine = None
connection = None
trans = None

def setup():
    global session, engine, connect, trans
    session, engine, connect = setup_database()

def teardown():
    global session, trans

provider = SAORMProvider(metadata=metadata)
class TestValidatorSelector(SproxTest):
    def setup(self):
        self.validatorSelector = ValidatorSelector()
        super(TestValidatorSelector, self).setup()

    def test_createObj(self):
        pass

    def testSelect(self):
        assert issubclass(self.validatorSelector.select('lala'), UnicodeString)

class TestSAValidatorSelector(SproxTest):
    testColumns = (
    (BLOB,        NoneType),
    (BOOLEAN,     NoneType),
    (Binary,      NoneType),
    (Boolean,     NoneType),
    (CHAR,        UnicodeString),
    (CLOB,        UnicodeString),
    (DATE,        DateValidator),
    (DATETIME,    DateValidator),
    (DECIMAL,     Number),
    (Date,        DateValidator),
    (DateTime,    DateValidator),
    (FLOAT,       Number),
    (Float,       Number),
    (INT,         Int),
    (Integer,     Int),
    (Numeric,     Number),
    (PickleType,  UnicodeString),
    (SMALLINT,    Int),
    (SmallInteger,Int),
    (String,      UnicodeString),
    (TEXT,        UnicodeString),
    (TIME,        DateValidator),
    (Time,        DateValidator),
    (TIMESTAMP,   DateValidator),
    (Unicode,     UnicodeString),
    (VARCHAR,     UnicodeString),
    (OracleNumeric,      Number),
    (OracleDate,         DateValidator),
    (OracleDateTime,     DateValidator),
    (OracleInteger,      Int),
    (OracleSmallInteger, Int),

    )

    def setup(self):
        super(TestSAValidatorSelector, self).setup()
        self.validator_selector = SAValidatorSelector(provider)

    def test_createObj(self):
        pass

    def test_select(self):
        for type, expected in self.testColumns:
            args={}
            if isinstance(type, Text):
                args['size'] = 100
            c = Column('asdf', type, args)
            yield self._test_select, c, expected

    def _test_select(self, column, expected):
        validator = self.validator_selector.select(column)
        assert isinstance(validator, expected) or issubclass(validator, expected), validator

    def test_name_based_validator_select(self):
        c = Column('email_address', String)
        validator = self.validator_selector.select(c)
        assert issubclass(validator, Email), validator