Contact: fumanchu@aminus.org

Log in as guest/geniusql to create tickets

root/trunk/geniusql/test/test_mysql_modeling.py

Revision 311 (checked in by lakin, 7 months ago)

further fixes to the whitespace.

  • Property svn:eol-style set to native
Line 
1 import traceback
2 import unittest
3 from geniusql.test import test
4
5 try:
6     import _mysql
7 except ImportError:
8     def run():
9         import warnings
10         warnings.warn("The _mysql module could not be imported. "
11                       "The test for MySQL will not be run.")
12 else:
13     opts = {"host": "localhost",
14             "db": "geniusql_test",
15             "user": "geniusql_test",
16             "passwd": "geniusql_test",
17             }
18     db = test.DBConfig('mysql', opts)
19     setUp = db.setUp
20     tearDown = db.tearDown
21
22     class DBTypesTest(unittest.TestCase):
23
24         def test_ENUM(self):
25             values = ['General', 'Colonel', 'Major', 'Captain']
26             self.schema.db.execute_ddl(
27                 "CREATE TABLE `soldier` (`id` MEDIUMINT AUTO_INCREMENT, "
28                 "`name` VARBINARY(255), `rank` ENUM(%s), "
29                 "PRIMARY KEY (`id`)) CHARACTER SET utf8;" %
30                 ', '.join(["'%s'" % v for v in values]))
31             self.schema.discover('soldier')
32             table = self.schema['soldier']
33             self.assertEqual(table['rank'].dbtype.bytes, 1)
34             self.assertEqual(table['rank'].dbtype.enum_values,
35                              # Strange but true...
36                              [v.upper() for v in values])
37
38             id = table.insert(name='George S. Patton', rank='Colonel')['id']
39             self.assertEqual(table.select(id=id)['rank'], 'Colonel')
40
41             table.save(id=id, rank='General')
42             self.assertEqual(table.select(id=id)['rank'], 'General')
43
44             self.assertRaises(_mysql.DataError, table.save,
45                               id=id, rank='Generalissimo')
46
47         def test_autoincrement(self):
48             self.schema.db.execute_ddl(
49                 "CREATE TABLE `Address` (`id` int(11) NOT NULL auto_increment, "
50                 "`Userid` int(11) default NULL, "
51                 "`StreetAddress` varchar(255) default NULL, "
52                 "`StreetAddress2` varchar(255) default NULL, "
53                 "`City` varchar(100) default NULL, "
54                 "`State` varchar(100) default NULL, "
55                 "`Countryid` int(11) default NULL, "
56                 "`PostalCode` varchar(10) default NULL, "
57                 "PRIMARY KEY  (`id`), "
58                 "KEY `Userid` (`Userid`), "
59                 "KEY `Countryid` (`Countryid`) "
60                 ") ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;")
61             self.schema.discover('Address')
62             table = self.schema['Address']
63             for key in table:
64                 self.assertEqual(table[key].autoincrement, key == 'id')
65     db.register_db_test_class(DBTypesTest)
66
67
Note: See TracBrowser for help on using the browser.