Source code for sqlobject.tests.test_paste

from__future__import print_function
importpytest
fromsqlobjectimport sqlhub, SQLObject, StringCol
try:
 fromsqlobject.wsgi_middlewareimport make_middleware
except ImportError:
 pytestmark = pytest.mark.skipif(True, reason='These tests require Paste')
from.dbtestimport getConnection, getConnectionURI, setupClass
[docs] classNameOnly(SQLObject): name = StringCol()
[docs] defmakeapp(abort=False, begin=False, fail=False): defapp(environ, start_response): NameOnly(name='app1') if fail == 'early': assert 0 start_response('200 OK', [('content-type', 'text/plain')]) if begin: environ['sqlobject.begin']() NameOnly(name='app2') if abort: environ['sqlobject.abort']() if fail: assert 0 return ['ok'] return app
[docs] defmakestack(abort=False, begin=False, fail=False, **kw): app = makeapp(abort=abort, begin=begin, fail=fail) app = make_middleware(app, {}, database=getConnectionURI(), **kw) return app
[docs] defrunapp(**kw): print('-' * 8) app = makestack(**kw) env = {} defstart_response(*args): pass try: list(app(env, start_response)) return True except AssertionError: return False
[docs] defsetup(): setupClass(NameOnly) getConnection().query('DELETE FROM name_only') NameOnly._connection = sqlhub
[docs] defnames(): names = [n.name for n in NameOnly.select(connection=getConnection())] names.sort() return names
[docs] deftest_fail(): setup() assert not runapp(fail=True, use_transaction=True) assert names() == [] setup() assert not runapp(fail=True, use_transaction=False) assert names() == ['app1', 'app2'] setup() assert not runapp(fail=True, begin=True, use_transaction=True) assert names() == ['app1']
[docs] deftest_other(): setup() assert runapp(fail=False, begin=True, use_transaction=True) assert names() == ['app1', 'app2'] setup() # @@: Dammit, I can't get these to pass because I can't get the # stupid table to clear itself. setupClass() sucks. When I # fix it I'll take this disabling out: pytest.skip("Oops...") assert names() == [] assert runapp(fail=False, begin=True, abort=True, use_transaction=True) assert names() == ['app1'] setup() assert runapp(use_transaction=True) assert names() == ['app1', 'app2']