73 lines
2.2 KiB
Python
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.
|