tests: use new parametrized mode to run tracking code tests (#6598)

This commit is contained in:
Frédéric Péters 2015-03-02 16:17:15 +01:00
parent f7565b4c1e
commit c4e4e839ca
3 changed files with 38 additions and 35 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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'})