From 5c45209199b968bd85b87b367c8bc9f0e8612aef Mon Sep 17 00:00:00 2001 From: Guillaume Ayoub Date: Fri, 22 Sep 2017 16:22:25 +0200 Subject: [PATCH] 100% coverage for tests --- Makefile | 2 +- afpy.py | 20 +++++++++++++------- tests.py | 20 ++++++++++++++++++-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 74b7f32..cdd293f 100644 --- a/Makefile +++ b/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 diff --git a/afpy.py b/afpy.py index ec7165d..ab3e18e 100644 --- a/afpy.py +++ b/afpy.py @@ -46,24 +46,30 @@ def pages(name='index'): @app.route('/docs/') 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/') 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')}) diff --git a/tests.py b/tests.py index 9162062..a6091d1 100644 --- a/tests.py +++ b/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