100% coverage for tests

This commit is contained in:
Guillaume Ayoub 2017-09-22 16:22:25 +02:00
parent d2659671c3
commit 5c45209199
3 changed files with 32 additions and 10 deletions

View File

@ -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
View File

@ -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')})

View File

@ -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