first draft for a simple hooks based custom attribute storage,
with a BytesFileSystemStorage POC implementation.
Basically:
* a dictionary contains maps from which attribute of which entity types are
mapped to which custom storage
* hooks check for one of these entity type being added/modified/deleted
* read is based on the sql generator callback mecanism (used in vcsfile for
instance)
* all storages have the same basic interface (read, add, update, delete),
and should be pluggable in a transparent way (except at migration time
when one want to change from a storage to another)
* the sample BytesFileSystemStorage:
* may store Bytes attributes content of any entity type as file on the file system
* is based on one FSPATH rql/sql function and another _fsopen only available in sql
* has a dumb file name allocation algorithm
"""unit tests for module cubicweb.server.sqlutils
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
import sys
from logilab.common.testlib import TestCase, unittest_main
from cubicweb.server.sqlutils import *
BASE_CONFIG = {
'db-driver' : 'Postgres',
'db-host' : 'crater',
'db-name' : 'cubicweb2_test',
'db-user' : 'toto',
'db-upassword' : 'toto',
}
class SQLAdapterMixInTC(TestCase):
def test_init(self):
o = SQLAdapterMixIn(BASE_CONFIG)
self.assertEquals(o.encoding, 'UTF-8')
def test_init_encoding(self):
config = BASE_CONFIG.copy()
config['db-encoding'] = 'ISO-8859-1'
o = SQLAdapterMixIn(config)
self.assertEquals(o.encoding, 'ISO-8859-1')
if __name__ == '__main__':
unittest_main()