| 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 |
|
|---|
| 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 |
|
|---|