forked from AFPy/afpy.org
100% coverage for tests
This commit is contained in:
parent
d2659671c3
commit
5c45209199
2
Makefile
2
Makefile
|
@ -19,7 +19,7 @@ check-outdated:
|
|||
$(PIP) list --outdated --format=columns
|
||||
|
||||
test:
|
||||
$(PYTEST) tests.py --flake8 --isort --cov=afpy --cov=tests
|
||||
$(PYTEST) tests.py --flake8 --isort --cov=afpy --cov=tests --cov-report=term-missing
|
||||
|
||||
serve:
|
||||
$(VENV)/bin/afpy.py
|
||||
|
|
20
afpy.py
20
afpy.py
|
@ -46,24 +46,30 @@ def pages(name='index'):
|
|||
|
||||
@app.route('/docs/<name>')
|
||||
def rest(name):
|
||||
with open(f'templates/{name}.rst') as fd:
|
||||
parts = docutils.core.publish_parts(
|
||||
source=fd.read(),
|
||||
writer=docutils.writers.html5_polyglot.Writer(),
|
||||
settings_overrides={'initial_header_level': 2})
|
||||
try:
|
||||
with open(f'templates/{name}.rst') as fd:
|
||||
parts = docutils.core.publish_parts(
|
||||
source=fd.read(),
|
||||
writer=docutils.writers.html5_polyglot.Writer(),
|
||||
settings_overrides={'initial_header_level': 2})
|
||||
except FileNotFoundError:
|
||||
abort(404)
|
||||
return render_template(
|
||||
'rst.html', body_id=name, html=parts['body'], title=parts['title'])
|
||||
|
||||
|
||||
@app.route('/feed/<name>')
|
||||
def feed(name):
|
||||
feed = feedparser.parse(FEEDS[name])
|
||||
try:
|
||||
feed = feedparser.parse(FEEDS[name])
|
||||
except KeyError:
|
||||
abort(404)
|
||||
return render_template(
|
||||
'feed.html', body_id=name, entries=feed.entries,
|
||||
title=feed.feed.get('title'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
from sassutils.wsgi import SassMiddleware
|
||||
app.wsgi_app = SassMiddleware(
|
||||
app.wsgi_app, {'afpy': ('sass', 'static/css', '/static/css')})
|
||||
|
|
20
tests.py
20
tests.py
|
@ -3,17 +3,33 @@ import pytest
|
|||
from afpy import app
|
||||
|
||||
|
||||
def test_no_arguments():
|
||||
def test_home():
|
||||
response = app.test_client().get('/')
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
@pytest.mark.parametrize('name', ['index', 'communaute'])
|
||||
def test_with_arguments(name):
|
||||
def test_html(name):
|
||||
response = app.test_client().get(f'/{name}')
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
@pytest.mark.parametrize('name', ['charte', 'a-propos'])
|
||||
def test_rest(name):
|
||||
response = app.test_client().get(f'/docs/{name}')
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
@pytest.mark.parametrize('name', ['planet', 'meetup_lyon'])
|
||||
def test_feed(name):
|
||||
response = app.test_client().get(f'/feed/{name}')
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_404():
|
||||
response = app.test_client().get('/unknown')
|
||||
assert response.status_code == 404
|
||||
response = app.test_client().get('/docs/unknown')
|
||||
assert response.status_code == 404
|
||||
response = app.test_client().get('/feed/unknown')
|
||||
assert response.status_code == 404
|
||||
|
|
Loading…
Reference in New Issue
Block a user