rookeries/tests/functional/test_basic_setup.py

73 lines
2.2 KiB
Python

"""
Functional tests for testing page content.
Note that [tests can not assert on the status code due to bug in selenium based webdriver tests]
(https://github.com/cobrateam/splinter/issues/509)
:copyright: Copyright 2013-2017, Dorian Pula <dorian.pula@amber-penguin-software.ca>
:license: AGPL v3+
"""
import pytest
import sqlalchemy
from rookeries.pages import models as page_models
from rookeries.sites import models as site_models
from tests import utils
TEST_PAGE_TITLE = 'License'
TEST_PAGE_CONTENT = '''
# License (AGPL)
This is the text of the AGPL.
'''
@pytest.fixture(scope='session')
def splinter_driver_kwargs():
return {
'browser': 'firefox',
'platform': 'Linux',
'name': 'Rookeries Test Basic Setup',
}
@pytest.fixture(scope='module')
def test_page(db_engine):
session = sqlalchemy.orm.sessionmaker(bind=db_engine, autocommit=True)()
session.begin()
test_page_slug = f'test-{utils.generate_random_suffix()}'
test_page_ = session.query(page_models.Page).filter((page_models.Page.slug == test_page_slug)).first()
if not test_page_:
test_page_ = page_models.Page(slug=test_page_slug, title=TEST_PAGE_TITLE, content=TEST_PAGE_CONTENT)
session.add(test_page_)
test_page_ = session.query(page_models.Page).filter((page_models.Page.slug == test_page_slug)).first()
test_page_json = test_page_.to_json()
session.commit()
session.close()
return test_page_json
@pytest.mark.skip('FIXME once page setup figured out')
def test_basic_page_setup_returns_page_not_found_on_unknown_page(browser, api_base_uri):
unknown_test_page = utils.generate_random_suffix()
browser.visit(f'{api_base_uri}/{unknown_test_page}')
assert browser.title == f'Rookeries - Unknown Page'
page_title = browser.find_by_css('h1')[2]
assert page_title.text == f'"{unknown_test_page}" Page Not Found'
@pytest.mark.skip('FIXME once page setup figured out')
def test_basic_page_setup_on_known_page(browser, api_base_uri, test_page):
browser.visit(f'{api_base_uri}/{test_page["slug"]}')
assert browser.title == f'Rookeries - {test_page["slug"]}'
page_title = browser.find_by_css('h1')[2]
assert page_title.text == 'License (AGPL)'
# TODO: Add in tests to login via form.