3
0
Fork 0

Add make_engine_from_config() method for AppHandler

and other misc. tweaks needed to get this incorporated into Rattail
This commit is contained in:
Lance Edgar 2023-11-19 20:36:51 -06:00
parent afd2d005a3
commit b458272207
8 changed files with 177 additions and 91 deletions

View file

@ -5,6 +5,8 @@ from unittest.mock import patch, MagicMock
import sqlalchemy as sa
from sqlalchemy import orm
from sqlalchemy.engine import Engine
from sqlalchemy.pool import NullPool
from wuttjamaican import app, db
@ -19,6 +21,38 @@ class TestAppHandler(TestCase):
self.assertIs(self.app.config, self.config)
self.assertEqual(self.app.handlers, {})
def test_make_engine_from_config_basic(self):
engine = self.app.make_engine_from_config({
'sqlalchemy.url': 'sqlite://',
})
self.assertIsInstance(engine, Engine)
def test_make_engine_from_config_poolclass(self):
engine = self.app.make_engine_from_config({
'sqlalchemy.url': 'sqlite://',
})
self.assertNotIsInstance(engine.pool, NullPool)
engine = self.app.make_engine_from_config({
'sqlalchemy.url': 'sqlite://',
'sqlalchemy.poolclass': 'sqlalchemy.pool:NullPool',
})
self.assertIsInstance(engine.pool, NullPool)
def test_make_engine_from_config_pool_pre_ping(self):
engine = self.app.make_engine_from_config({
'sqlalchemy.url': 'sqlite://',
})
self.assertFalse(engine.pool._pre_ping)
engine = self.app.make_engine_from_config({
'sqlalchemy.url': 'sqlite://',
'sqlalchemy.pool_pre_ping': 'true',
})
self.assertTrue(engine.pool._pre_ping)
def test_make_session(self):
session = self.app.make_session()
self.assertIsInstance(session, db.Session.class_)