def test_finding_closest_match_by_method(): post = r.Rule("/post/", endpoint="foobar", methods=["POST"]) get = r.Rule("/get/", endpoint="foobar", methods=["GET"]) put = r.Rule("/put/", endpoint="foobar", methods=["PUT"]) m = r.Map([post, get, put]) adapter = m.bind("example.com") assert r.BuildError("invalid", {}, "POST", adapter).suggested == post assert r.BuildError("invalid", {}, "GET", adapter).suggested == get assert r.BuildError("invalid", {}, "PUT", adapter).suggested == put
def test_finding_closest_match_by_method(): post = r.Rule(u'/post/', endpoint='foobar', methods=['POST']) get = r.Rule(u'/get/', endpoint='foobar', methods=['GET']) put = r.Rule(u'/put/', endpoint='foobar', methods=['PUT']) m = r.Map([post, get, put]) adapter = m.bind('example.com') assert r.BuildError('invalid', {}, 'POST', adapter).suggested == post assert r.BuildError('invalid', {}, 'GET', adapter).suggested == get assert r.BuildError('invalid', {}, 'PUT', adapter).suggested == put
def test_finding_closest_match_by_values(): rule_id = r.Rule("/user/id/<id>/", endpoint="users") rule_slug = r.Rule("/user/<slug>/", endpoint="users") rule_random = r.Rule("/user/emails/<email>/", endpoint="users") m = r.Map([rule_id, rule_slug, rule_random]) adapter = m.bind("example.com") assert r.BuildError("x", {"slug": ""}, None, adapter).suggested == rule_slug
def test_finding_closest_match_by_values(): rule_id = r.Rule(u'/user/id/<id>/', endpoint='users') rule_slug = r.Rule(u'/user/<slug>/', endpoint='users') rule_random = r.Rule(u'/user/emails/<email>/', endpoint='users') m = r.Map([rule_id, rule_slug, rule_random]) adapter = m.bind('example.com') assert r.BuildError('x', {'slug': ''}, None, adapter).suggested == \ rule_slug
def test_finding_closest_match_by_endpoint(): m = r.Map([ r.Rule("/foo/", endpoint="users.here"), r.Rule("/wat/", endpoint="admin.users"), r.Rule("/woop", endpoint="foo.users"), ]) adapter = m.bind("example.com") assert (r.BuildError("admin.user", None, None, adapter).suggested.endpoint == "admin.users")
def test_finding_closest_match_by_endpoint(): m = r.Map([ r.Rule(u'/foo/', endpoint='users.here'), r.Rule(u'/wat/', endpoint='admin.users'), r.Rule(u'/woop', endpoint='foo.users'), ]) adapter = m.bind('example.com') assert r.BuildError('admin.user', None, None, adapter).suggested.endpoint \ == 'admin.users'
def test_finding_closest_match_when_none_exist(): m = r.Map([]) assert not r.BuildError("invalid", {}, None, m.bind("test.com")).suggested