From fb600003d61337b2db223298d4e606564f53371c Mon Sep 17 00:00:00 2001 From: Christophe de Vienne Date: Sun, 13 May 2012 00:20:32 +0200 Subject: [PATCH] Improve code coverage --- wsme/protocols/restxml.py | 5 +---- wsme/root.py | 33 +++++++++++++++++---------------- wsme/tests/test_restxml.py | 12 ++++++++++++ wsme/tests/test_root.py | 26 ++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 20 deletions(-) diff --git a/wsme/protocols/restxml.py b/wsme/protocols/restxml.py index 29bdb81..88b0b6a 100644 --- a/wsme/protocols/restxml.py +++ b/wsme/protocols/restxml.py @@ -3,10 +3,7 @@ import datetime from six import u import six -try: - import xml.etree.ElementTree as et -except ImportError: - import cElementTree as et +import xml.etree.ElementTree as et from simplegeneric import generic diff --git a/wsme/root.py b/wsme/root.py index 4b98d98..100b7ba 100644 --- a/wsme/root.py +++ b/wsme/root.py @@ -28,6 +28,23 @@ html_body = u(""" """) +def default_prepare_response_body(request, results): + r = None + sep = None + for value in results: + if sep is None: + if isinstance(value, six.text_type): + sep = u('\n') + r = u('') + else: + sep = b('\n') + r = b('') + else: + r += sep + r += value + return r + + class DummyTransaction: def commit(self): pass @@ -166,22 +183,6 @@ class WSRoot(object): return protocol.encode_error(context, infos) def _handle_request(self, request): - def default_prepare_response_body(request, results): - r = None - sep = None - for value in results: - if sep is None: - if isinstance(value, six.text_type): - sep = u('\n') - r = u('') - else: - sep = b('\n') - r = b('') - else: - r += sep - r += value - return r - res = webob.Response() res_content_type = None diff --git a/wsme/tests/test_restxml.py b/wsme/tests/test_restxml.py index 4b3a976..b30f2bd 100644 --- a/wsme/tests/test_restxml.py +++ b/wsme/tests/test_restxml.py @@ -149,6 +149,17 @@ class TestRestXML(wsme.tests.protocol.ProtocolTestCase): test """) + def test_encode_sample_params(self): + lang, content = self.root.protocols[0].encode_sample_params( + [('a', int, 2)], True) + assert lang == 'xml', lang + assert content == b('\n 2\n'), content + + def test_encode_sample_result(self): + lang, content = self.root.protocols[0].encode_sample_result(int, 2, True) + assert lang == 'xml', lang + assert content == b('2'), content + def test_nil_fromxml(self): for dt in ( str, [int], {int: str}, bool, @@ -158,6 +169,7 @@ class TestRestXML(wsme.tests.protocol.ProtocolTestCase): def test_nil_toxml(self): for dt in ( + wsme.types.bytes, [int], {int: str}, bool, datetime.date, datetime.time, datetime.datetime): x = et.tostring(toxml(dt, 'value', None)) diff --git a/wsme/tests/test_root.py b/wsme/tests/test_root.py index 9c3e8b4..da53780 100644 --- a/wsme/tests/test_root.py +++ b/wsme/tests/test_root.py @@ -3,6 +3,9 @@ import unittest from wsme import WSRoot +from wsme.root import default_prepare_response_body + +from six import b, u class TestRoot(unittest.TestCase): @@ -13,3 +16,26 @@ class TestRoot(unittest.TestCase): txn = root.begin() txn.abort() + + def test_default_prepare_response_body(self): + default_prepare_response_body(None, [b('a')]) == b('a') + default_prepare_response_body(None, [b('a'), b('b')]) == b('a\nb') + default_prepare_response_body(None, [u('a')]) == u('a') + default_prepare_response_body(None, [u('a'), u('b')]) == u('a\nb') + + def test_protocol_selection_error(self): + import wsme.protocols + + class P(wsme.protocols.Protocol): + def accept(self, r): + raise Exception('test') + + root = WSRoot() + root.addprotocol(P()) + + from webob import Request + req = Request.blank('/test?check=a&check=b&name=Bob') + res = root._handle_request(req) + assert res.status_int == 500 + assert res.content_type == 'text/plain' + assert res.text == u('Error while selecting protocol: test'), req.text