1"""
2Test the default styles, to guarantee consistency.
3"""
4
5from sqlobject import *
6from sqlobject.tests.dbtest import *
7from sqlobject.styles import Style, MixedCaseUnderscoreStyle, MixedCaseStyle
8
9#hash of styles versus the database names resulting from 'columns' below
10columns = ["ABCUpper", "abc_lower", "ABCamelCaseColumn"]
11styles = {Style:columns,
12          MixedCaseUnderscoreStyle:["abc_upper", "abc_lower", "ab_camel_case_column"],
13          MixedCaseStyle:["ABCUpper", "Abc_lower", "ABCamelCaseColumn"],
14        }
15
16#hash of styles versus the database names resulting from a foreign key named 'FKey'
17fkey = ForeignKey("DefaultStyleTest", name="FKey")
18fkeys = {Style:"FKeyID",
19          MixedCaseUnderscoreStyle:"f_key_id",
20          MixedCaseStyle:"FKeyID",
21        }
22
23
24def make_columns():
25    global columns
26    columns = []
27    for col_name in columns:
28        columns.append(StringCol(name=col_name, length=10))
29
30
31def do_col_test(DefaultStyleTest, style, dbnames):
32    DefaultStyleTest.sqlmeta.style = style()
33    for col, old_dbname in zip(columns, dbnames):
34        DefaultStyleTest.sqlmeta.addColumn(col)
35        try:
36            new_dbname = DefaultStyleTest.sqlmeta.columns[col.name].dbName
37            assert new_dbname == old_dbname
38        finally:
39            if col.name in DefaultStyleTest.sqlmeta.columns:
40                DefaultStyleTest.sqlmeta.delColumn(col)
41
42def do_fkey_test(DefaultStyleTest, style, dbname):
43    DefaultStyleTest.sqlmeta.style = style()
44    DefaultStyleTest.sqlmeta.addColumn(fkey)
45    try:
46        assert DefaultStyleTest.sqlmeta.columns.keys()[0] == "FKeyID"
47        assert DefaultStyleTest.sqlmeta.columns.values()[0].dbName == dbname
48    finally:
49        DefaultStyleTest.sqlmeta.delColumn(fkey)
50
51class DefaultStyleTest(SQLObject):
52    pass
53
54def test_default_styles():
55    make_columns()
56    for style in styles:
57        yield do_col_test, DefaultStyleTest, style, styles[style]
58        yield do_fkey_test, DefaultStyleTest, style, fkeys[style]
59