def test_remove_rule(self): router = Router() def index(_: Request, args) -> Response: return Response(b"index") def users(_: Request, args) -> Response: return Response(b"users") rule0 = router.add("/", index) rule1 = router.add("/users/<int:user_id>", users) assert router.dispatch(Request("GET", "/")).data == b"index" assert router.dispatch(Request("GET", "/users/12")).data == b"users" router.remove_rule(rule1) assert router.dispatch(Request("GET", "/")).data == b"index" with pytest.raises(NotFound): assert router.dispatch(Request("GET", "/users/12")) router.remove_rule(rule0) with pytest.raises(NotFound): assert router.dispatch(Request("GET", "/")) with pytest.raises(NotFound): assert router.dispatch(Request("GET", "/users/12"))
def test_remove_non_existing_rule(self): router = Router() def index(_: Request, args) -> Response: return Response(b"index") rule = router.add("/", index) router.remove_rule(rule) with pytest.raises(KeyError) as e: router.remove_rule(rule) e.match("no such rule")