server/test/unittest_migractions.py
changeset 1251 af40e615dc89
parent 972 1efba3fd1364
child 1263 01152fffd593
equal deleted inserted replaced
1250:5c20a7f13c84 1251:af40e615dc89
     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')