CPI Ordering System (the old version)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

72 lines
1.7 KiB

7 years ago
''' functional tests for ordr2 '''
import pytest
import transaction
import webtest
from .. import APP_SETTINGS, get_example_user
7 years ago
WEBTEST_SETTINGS = APP_SETTINGS.copy()
# WEBTEST_SETTINGS['pyramid.includes'].append('pyramid_mailer.testing')
class CustomTestApp(webtest.TestApp):
''' might add custom functionality to webtest.TestApp '''
pass
def login(self, username, password):
''' stub for user login '''
self.logout()
result = self.get('/login')
login_form = result.forms[0]
login_form['username'] = username
login_form['password'] = password
login_form.submit()
def logout(self):
''' stub for user logout '''
self.get('/logout')
def reset(self):
''' reset the webapp '''
self.logout()
super().reset()
7 years ago
def create_users(dbsession):
''' create example users '''
from ordr.models.account import Role
for role in Role:
user = get_example_user(role)
dbsession.add(user)
7 years ago
@pytest.fixture(scope='module')
def testappsetup():
7 years ago
''' fixture for using webtest '''
from ordr.models.meta import Base
from ordr.models import get_tm_session
from ordr import main
app = main({}, **WEBTEST_SETTINGS)
testapp = CustomTestApp(app)
session_factory = app.registry['dbsession_factory']
engine = session_factory.kw['bind']
Base.metadata.create_all(engine)
with transaction.manager:
# set up test data here
dbsession = get_tm_session(session_factory, transaction.manager)
create_users(dbsession)
7 years ago
yield testapp
Base.metadata.drop_all(engine)
@pytest.fixture(scope='function')
def testapp(testappsetup):
testappsetup.reset()
yield testappsetup