""" 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 :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.