Improve code coverage

This commit is contained in:
Christophe de Vienne 2012-05-13 00:20:32 +02:00
parent ad36bf1d54
commit fb600003d6
4 changed files with 56 additions and 20 deletions

View File

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

View File

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

View File

@ -149,6 +149,17 @@ class TestRestXML(wsme.tests.protocol.ProtocolTestCase):
<atext>test</atext>
</value>""")
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('<parameters>\n <a>2</a>\n</parameters>'), 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('<result>2</result>'), 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))

View File

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