60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
# standard imports
|
|
import logging
|
|
import unittest
|
|
import tempfile
|
|
import os
|
|
#import pysqlite
|
|
|
|
# external imports
|
|
from chainlib.chain import ChainSpec
|
|
import alembic
|
|
import alembic.config
|
|
|
|
# local imports
|
|
from chainqueue.db import dsn_from_config
|
|
from chainqueue.db.models.base import SessionBase
|
|
|
|
script_dir = os.path.realpath(os.path.dirname(__file__))
|
|
|
|
logg = logging.getLogger().getChild(__name__)
|
|
|
|
|
|
class TestBase(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
rootdir = os.path.dirname(os.path.dirname(__file__))
|
|
dbdir = os.path.join(rootdir, 'chainqueue', 'db')
|
|
#migrationsdir = os.path.join(dbdir, 'migrations', load_config.get('DATABASE_ENGINE'))
|
|
#if not os.path.isdir(migrationsdir):
|
|
migrationsdir = os.path.join(dbdir, 'migrations', 'default')
|
|
logg.info('using migrations directory {}'.format(migrationsdir))
|
|
|
|
config = {
|
|
'DATABASE_ENGINE': 'sqlite',
|
|
'DATABASE_DRIVER': 'pysqlite',
|
|
'DATABASE_NAME': 'chainqueue.sqlite',
|
|
}
|
|
logg.debug('config {}'.format(config))
|
|
|
|
dsn = dsn_from_config(config)
|
|
SessionBase.poolable = False
|
|
SessionBase.transactional = False
|
|
SessionBase.procedural = False
|
|
SessionBase.connect(dsn, debug=False)
|
|
|
|
ac = alembic.config.Config(os.path.join(migrationsdir, 'alembic.ini'))
|
|
ac.set_main_option('sqlalchemy.url', dsn)
|
|
ac.set_main_option('script_location', migrationsdir)
|
|
|
|
alembic.command.downgrade(ac, 'base')
|
|
alembic.command.upgrade(ac, 'head')
|
|
|
|
self.session = SessionBase.create_session()
|
|
|
|
self.chain_spec = ChainSpec('evm', 'foo', 42, 'bar')
|
|
|
|
|
|
def tearDown(self):
|
|
self.session.commit()
|
|
self.session.close()
|