refactor: Use DDT for uri_templates tests. (#848)

This commit is contained in:
Kurt Griffiths
2016-07-19 17:11:55 -06:00
committed by GitHub
parent a085a34b85
commit 1cf9eebe31
2 changed files with 29 additions and 55 deletions

View File

@@ -1,3 +1,4 @@
import ddt
import six
import falcon
@@ -62,6 +63,7 @@ class FileDetailsResource(object):
self.called = True
@ddt.ddt
class TestUriTemplates(testing.TestBase):
def before(self):
@@ -82,28 +84,19 @@ class TestUriTemplates(testing.TestBase):
self.assertRaises(TypeError, self.api.add_route, set(), self.resource)
self.assertRaises(TypeError, self.api.add_route, self, self.resource)
def test_field_name_cannot_start_with_digit(self):
self.assertRaises(ValueError, self.api.add_route,
'/hello/{1world}', self.resource)
@ddt.data('/hello/{1world}', '/{524hello}/world')
def test_field_name_cannot_start_with_digit(self, route):
self.assertRaises(ValueError, self.api.add_route, route, self.resource)
self.assertRaises(ValueError, self.api.add_route,
'/{524hello}/world', self.resource)
def test_whitespace_not_allowed(self):
self.assertRaises(ValueError, self.api.add_route,
'/{thing }/world', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'/{ thing}/world', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'/{ thing }/world', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'/{thing}/wo rld', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'/{thing} /world', self.resource)
@ddt.data(
'/{thing }/world',
'/{ thing}/world',
'/{ thing }/world',
'/{thing}/wo rld',
'/{thing} /world'
)
def test_whitespace_not_allowed(self, route):
self.assertRaises(ValueError, self.api.add_route, route, self.resource)
def test_no_vars(self):
self.api.add_route('/hello/world', self.resource)
@@ -220,28 +213,13 @@ class TestUriTemplates(testing.TestBase):
self.assertEqual(resource.id, test_id)
self.assertEqual(resource.name51, test_name)
def test_empty_path_component(self):
self.assertRaises(ValueError, self.api.add_route,
'//', self.resource)
@ddt.data('//', '//begin', '/end//', '/in//side')
def test_empty_path_component(self, route):
self.assertRaises(ValueError, self.api.add_route, route, self.resource)
self.assertRaises(ValueError, self.api.add_route,
'//begin', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'/end//', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'/in//side', self.resource)
def test_relative_path(self):
self.assertRaises(ValueError, self.api.add_route,
'', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'no', self.resource)
self.assertRaises(ValueError, self.api.add_route,
'no/leading_slash', self.resource)
@ddt.data('', 'no', 'no/leading_slash')
def test_relative_path(self, route):
self.assertRaises(ValueError, self.api.add_route, route, self.resource)
def test_same_level_complex_var(self):
resource = FileResource()

View File

@@ -8,21 +8,17 @@ import falcon.testing as testing
@ddt.ddt
class TestUriTemplates(testing.TestBase):
def test_string_type_required(self):
self.assertRaises(TypeError, routing.compile_uri_template, 42)
self.assertRaises(TypeError, routing.compile_uri_template, falcon.API)
@ddt.data(42, falcon.API)
def test_string_type_required(self, value):
self.assertRaises(TypeError, routing.compile_uri_template, value)
def test_template_must_start_with_slash(self):
self.assertRaises(ValueError, routing.compile_uri_template, 'this')
self.assertRaises(ValueError, routing.compile_uri_template, 'this/that')
@ddt.data('this', 'this/that')
def test_template_must_start_with_slash(self, value):
self.assertRaises(ValueError, routing.compile_uri_template, value)
def test_template_may_not_contain_double_slash(self):
self.assertRaises(ValueError, routing.compile_uri_template, '//')
self.assertRaises(ValueError, routing.compile_uri_template, 'a//')
self.assertRaises(ValueError, routing.compile_uri_template, '//b')
self.assertRaises(ValueError, routing.compile_uri_template, 'a//b')
self.assertRaises(ValueError, routing.compile_uri_template, 'a/b//')
self.assertRaises(ValueError, routing.compile_uri_template, 'a/b//c')
@ddt.data('//', 'a//', '//b', 'a//b', 'a/b//', 'a/b//c')
def test_template_may_not_contain_double_slash(self, value):
self.assertRaises(ValueError, routing.compile_uri_template, value)
def test_root(self):
fields, pattern = routing.compile_uri_template('/')