4 from mx.DateTime import DateTime, today |
4 from mx.DateTime import DateTime, today |
5 |
5 |
6 from logilab.common.testlib import TestCase, unittest_main |
6 from logilab.common.testlib import TestCase, unittest_main |
7 from cubicweb.devtools.apptest import RepositoryBasedTC, get_versions |
7 from cubicweb.devtools.apptest import RepositoryBasedTC, get_versions |
8 |
8 |
|
9 from cubicweb.schema import CubicWebSchemaLoader |
|
10 from cubicweb.server.sqlutils import SQL_PREFIX |
9 from cubicweb.server.repository import Repository |
11 from cubicweb.server.repository import Repository |
10 from cubicweb.server.migractions import * |
12 from cubicweb.server.migractions import * |
11 |
13 |
12 orig_get_versions = Repository.get_versions |
14 orig_get_versions = Repository.get_versions |
13 |
15 |
27 repo = self.repo # set by the RepositoryBasedTC metaclass |
29 repo = self.repo # set by the RepositoryBasedTC metaclass |
28 # force to read schema from the database |
30 # force to read schema from the database |
29 repo.config._cubes = None |
31 repo.config._cubes = None |
30 repo.fill_schema() |
32 repo.fill_schema() |
31 # hack to read the schema from data/migrschema |
33 # hack to read the schema from data/migrschema |
32 from cubicweb.schema import CubicWebSchemaLoader |
|
33 CubicWebSchemaLoader.main_schema_directory = 'migrschema' |
34 CubicWebSchemaLoader.main_schema_directory = 'migrschema' |
34 global migrschema |
35 global migrschema |
35 migrschema = self.repo.config.load_schema() |
36 migrschema = self.repo.config.load_schema() |
36 del CubicWebSchemaLoader.main_schema_directory |
37 del CubicWebSchemaLoader.main_schema_directory |
37 assert 'Folder' in migrschema |
38 assert 'Folder' in migrschema |
66 self.mh.cmd_add_attribute('Note', 'shortpara') |
67 self.mh.cmd_add_attribute('Note', 'shortpara') |
67 self.failUnless('shortpara' in self.schema) |
68 self.failUnless('shortpara' in self.schema) |
68 self.assertEquals(self.schema['shortpara'].subjects(), ('Note', )) |
69 self.assertEquals(self.schema['shortpara'].subjects(), ('Note', )) |
69 self.assertEquals(self.schema['shortpara'].objects(), ('String', )) |
70 self.assertEquals(self.schema['shortpara'].objects(), ('String', )) |
70 # test created column is actually a varchar(64) |
71 # test created column is actually a varchar(64) |
71 notesql = self.mh.sqlexec("SELECT sql FROM sqlite_master WHERE type='table' and name='Note'")[0][0] |
72 notesql = self.mh.sqlexec("SELECT sql FROM sqlite_master WHERE type='table' and name='%sNote'" % SQL_PREFIX)[0][0] |
72 fields = dict(x.strip().split()[:2] for x in notesql.split('(', 1)[1].rsplit(')', 1)[0].split(',')) |
73 fields = dict(x.strip().split()[:2] for x in notesql.split('(', 1)[1].rsplit(')', 1)[0].split(',')) |
73 self.assertEquals(fields['shortpara'], 'varchar(64)') |
74 self.assertEquals(fields['%sshortpara' % SQL_PREFIX], 'varchar(64)') |
74 self.mh.rollback() |
75 self.mh.rollback() |
75 |
76 |
76 def test_add_datetime_with_default_value_attribute(self): |
77 def test_add_datetime_with_default_value_attribute(self): |
77 self.failIf('mydate' in self.schema) |
78 self.failIf('mydate' in self.schema) |
78 self.mh.cmd_add_attribute('Note', 'mydate') |
79 self.mh.cmd_add_attribute('Note', 'mydate') |