Anton Shestakov <av6@dwimlabs.net>, Wed, 10 Aug 2016 22:32:10 +0800
viewer: a more descriptive text for the green status badge
tests/test_viewer.py
Permissions: -rw-r--r--
from datetime import datetime from xml.etree import ElementTree from pytest import raises from tornado.web import HTTPError from tornado.testing import AsyncHTTPTestCase from candolint.handlers import get_project_or_404 from candolint.models import database, Project, Change, Check from viewer import CandolintViewer with database.transaction(): project = Project.create( url='https://example.com/alice/test-viewer', node='92cfceb39d57d914ed8b14d0e37643de0797ae56', date='2016-07-19 22:23 +0800', message='component: do a thing', ordinal=Check.get_next_ordinal(project), def test_get_project_or_404(): with raises(HTTPError) as error: get_project_or_404('butt.cloud', 'cyber', 'wizard-attack') assert error.value.status_code == 404 project = get_project_or_404('example.com', 'alice', 'test-viewer') assert project.id is not None assert project.url == 'https://example.com/alice/test-viewer' class ViewerTestCase(AsyncHTTPTestCase): response = self.fetch('/') assert response.code == 200 assert 'online linter' in response.body assert '1 error' in response.body assert '1 warning' in response.body assert '<a href="#">default</a>' in response.body response = self.fetch('/nobodyhere') assert response.code == 404 assert 'online linter' in response.body response = self.fetch('/butt.cloud/cyber/wizard-attack') assert response.code == 404 assert 'online linter' in response.body response = self.fetch('/example.com/alice/test-viewer') assert response.code == 200 assert 'Clone URL' in response.body assert 'status.svg' in response.body assert '.. image:: http' in response.body assert '1 error' in response.body assert '1 warning' in response.body assert '<a href="#">default</a>' in response.body response = self.fetch('/butt.cloud/cyber/wizard-attack/latest') assert response.code == 404 assert 'online linter' in response.body response = self.fetch('/example.com/alice/test-viewer/latest') assert response.code == 200 assert '1 error' in response.body assert '1 warning' in response.body assert '<a href="#">default</a>' in response.body response = self.fetch('/example.com/alice/test-viewer/latest/raw') assert response.code == 200 assert response.headers['Content-Type'] == 'text/plain; charset=utf-8' response = self.fetch('/butt.cloud/cyber/wizard-attack/status.svg') assert response.code == 404 assert 'online linter' in response.body response = self.fetch('/example.com/alice/test-viewer/status.svg') assert response.code == 200 root = ElementTree.fromstring(response.body) ns = {'svg': 'http://www.w3.org/2000/svg'} assert root.tag == '{http://www.w3.org/2000/svg}svg' assert 'height' in root.attrib assert root.attrib['height'] == '20' text = [el.text for el in root.findall('./svg:g/svg:text', ns)] assert text[::2] == ['lint', '1 error', '1 warning']