tests: use new parametrized mode to run tracking code tests (#6598)
This commit is contained in:
parent
f7565b4c1e
commit
c4e4e839ca
|
@ -668,13 +668,3 @@ def test_sql_criteria_ilike():
|
|||
|
||||
assert [x.id for x in data_class.select([st.ILike('f3', 'bar')], order_by='id')] == range(21, 51)
|
||||
assert [x.id for x in data_class.select([st.ILike('f3', 'BAR')], order_by='id')] == range(21, 51)
|
||||
|
||||
@postgresql
|
||||
def test_tracking_code():
|
||||
from test_tracking_code import generic_tracking_code
|
||||
generic_tracking_code(sql.TrackingCode)
|
||||
|
||||
@postgresql
|
||||
def test_tracking_code_duplicate():
|
||||
from test_tracking_code import generic_tracking_code_duplicate
|
||||
generic_tracking_code_duplicate(sql.TrackingCode)
|
||||
|
|
|
@ -1,20 +1,22 @@
|
|||
import shutil
|
||||
from quixote import cleanup
|
||||
import pytest
|
||||
|
||||
from wcs.formdef import FormDef
|
||||
from wcs.tracking_code import TrackingCode
|
||||
|
||||
from utilities import create_temporary_pub
|
||||
from utilities import create_temporary_pub, clean_temporary_pub
|
||||
|
||||
def setup_module(module):
|
||||
cleanup()
|
||||
global pub
|
||||
pub = create_temporary_pub()
|
||||
def pytest_generate_tests(metafunc):
|
||||
if 'pub' in metafunc.fixturenames:
|
||||
metafunc.parametrize('pub', ['pickle', 'sql'], indirect=True)
|
||||
|
||||
@pytest.fixture
|
||||
def pub(request):
|
||||
return create_temporary_pub(sql_mode=(request.param == 'sql'))
|
||||
|
||||
def teardown_module(module):
|
||||
shutil.rmtree(pub.APP_DIR)
|
||||
clean_temporary_pub()
|
||||
|
||||
def generic_tracking_code(klass):
|
||||
def test_tracking_code(pub):
|
||||
klass = pub.tracking_code_class
|
||||
klass.wipe()
|
||||
|
||||
code = klass()
|
||||
|
@ -44,7 +46,8 @@ def generic_tracking_code(klass):
|
|||
|
||||
assert klass.get(code.id).formdata.tracking_code == code.id
|
||||
|
||||
def generic_tracking_code_duplicate(klass):
|
||||
def test_tracking_code_duplicate(pub):
|
||||
klass = pub.tracking_code_class
|
||||
klass.wipe()
|
||||
|
||||
code = klass()
|
||||
|
@ -71,9 +74,3 @@ def generic_tracking_code_duplicate(klass):
|
|||
|
||||
assert marker.get('done') # makes sure we got to the real new id code
|
||||
assert klass.count() == 2
|
||||
|
||||
def test_tracking_code():
|
||||
generic_tracking_code(TrackingCode)
|
||||
|
||||
def test_tracking_code_duplicate():
|
||||
generic_tracking_code_duplicate(TrackingCode)
|
||||
|
|
|
@ -16,6 +16,8 @@ from quixote.wsgi import QWIP
|
|||
import wcs
|
||||
from wcs import publisher
|
||||
from wcs.qommon.http_request import HTTPRequest
|
||||
from wcs.users import User
|
||||
from wcs.tracking_code import TrackingCode
|
||||
|
||||
QWIP.request_class = HTTPRequest
|
||||
|
||||
|
@ -50,13 +52,23 @@ def create_temporary_pub(sql_mode=False):
|
|||
# allow saving the user
|
||||
pub.app_dir = os.path.join(APP_DIR, 'example.net')
|
||||
|
||||
if sql_mode:
|
||||
pub.user_class = sql.SqlUser
|
||||
pub.tracking_code_class = sql.TrackingCode
|
||||
else:
|
||||
pub.user_class = User
|
||||
pub.tracking_code_class = TrackingCode
|
||||
|
||||
if os.path.exists(pub.app_dir):
|
||||
pub.cfg = {}
|
||||
if sql_mode:
|
||||
pub.has_site_option = lambda x: True
|
||||
pub.cfg['postgresql'] = {'database': known_elements.sql_db_name, 'user': os.environ['USER']}
|
||||
pub.write_cfg()
|
||||
return pub
|
||||
|
||||
os.mkdir(pub.app_dir)
|
||||
if sql_mode:
|
||||
pub.has_site_option = lambda x: True
|
||||
|
||||
conn = psycopg2.connect(user=os.environ['USER'])
|
||||
conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
|
||||
cur = conn.cursor()
|
||||
|
@ -66,13 +78,11 @@ def create_temporary_pub(sql_mode=False):
|
|||
cur.close()
|
||||
|
||||
pub.cfg['postgresql'] = {'database': dbname, 'user': os.environ['USER']}
|
||||
pub.write_cfg()
|
||||
|
||||
sql.do_user_table()
|
||||
sql.do_tracking_code_table()
|
||||
|
||||
pub.user_class = sql.SqlUser
|
||||
pub.tracking_code_class = sql.TrackingCode
|
||||
|
||||
conn.close()
|
||||
|
||||
return pub
|
||||
|
@ -80,14 +90,20 @@ def create_temporary_pub(sql_mode=False):
|
|||
def clean_temporary_pub():
|
||||
if known_elements.pickle_app_dir:
|
||||
shutil.rmtree(known_elements.pickle_app_dir)
|
||||
known_elements.pickle_app_dir = None
|
||||
if known_elements.sql_app_dir:
|
||||
shutil.rmtree(known_elements.sql_app_dir)
|
||||
known_elements.sql_app_dir = None
|
||||
if known_elements.sql_db_name:
|
||||
conn = psycopg2.connect(user=os.environ['USER'])
|
||||
conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
|
||||
cur = conn.cursor()
|
||||
cur.execute('DROP DATABASE %s' % known_elements.sql_db_name)
|
||||
cur.close()
|
||||
try:
|
||||
cur = conn.cursor()
|
||||
cur.execute('DROP DATABASE %s' % known_elements.sql_db_name)
|
||||
cur.close()
|
||||
except psycopg2.Error:
|
||||
pass
|
||||
known_elements.sql_db_name = None
|
||||
|
||||
def get_app(pub):
|
||||
return TestApp(QWIP(pub), extra_environ={'HTTP_HOST': 'example.net'})
|
||||
|
|
Loading…
Reference in New Issue