summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Petrello <lists@ryanpetrello.com>2011-07-15 17:24:26 -0400
committerRyan Petrello <lists@ryanpetrello.com>2011-07-15 17:24:26 -0400
commitcb3d81f5431bfd48937c1b46be9bde2318d5bc2a (patch)
tree0d803ff04a4107156c1baa1d63deb3bd027fe290
parent303aba0d91199c5b8e758c5177638756dbcd3f28 (diff)
downloadpecan-cb3d81f5431bfd48937c1b46be9bde2318d5bc2a.tar.gz
More unit tests for RestController.
-rw-r--r--tests/test_rest.py104
1 files changed, 104 insertions, 0 deletions
diff --git a/tests/test_rest.py b/tests/test_rest.py
index 400b4ba..b9b7e0c 100644
--- a/tests/test_rest.py
+++ b/tests/test_rest.py
@@ -725,3 +725,107 @@ class TestRestController(object):
r = app.get('/foos/0/bars/0/bazs/0')
assert r.status_int == 200
assert r.body == 'zero-zero-zero'
+
+ def test_sub_nested_rest_with_overwrites(self):
+
+ class FinalController(object):
+
+ @expose()
+ def index(self):
+ return 'FINAL'
+
+ @expose()
+ def named(self):
+ return 'NAMED'
+
+ class BazsController(RestController):
+
+ data = [[['zero-zero-zero']]]
+
+ final = FinalController()
+
+ @expose()
+ def get_one(self, foo_id, bar_id, id):
+ return self.data[int(foo_id)][int(bar_id)][int(id)]
+
+ @expose()
+ def post(self):
+ return 'POST-GRAND-CHILD'
+
+ @expose()
+ def put(self, id):
+ return 'PUT-GRAND-CHILD'
+
+ class BarsController(RestController):
+
+ data = [['zero-zero']]
+
+ bazs = BazsController()
+
+ @expose()
+ def get_one(self, foo_id, id):
+ return self.data[int(foo_id)][int(id)]
+
+ @expose()
+ def post(self):
+ return 'POST-CHILD'
+
+ @expose()
+ def put(self, id):
+ return 'PUT-CHILD'
+
+ class FoosController(RestController):
+
+ data = ['zero']
+
+ bars = BarsController()
+
+ @expose()
+ def get_one(self, id):
+ return self.data[int(id)]
+
+ @expose()
+ def post(self):
+ return 'POST'
+
+ @expose()
+ def put(self, id):
+ return 'PUT'
+
+ class RootController(object):
+ foos = FoosController()
+
+ # create the app
+ app = TestApp(make_app(RootController()))
+
+ r = app.post('/foos')
+ assert r.status_int == 200
+ assert r.body == 'POST'
+
+ r = app.put('/foos/0')
+ assert r.status_int == 200
+ assert r.body == 'PUT'
+
+ r = app.post('/foos/bars')
+ assert r.status_int == 200
+ assert r.body == 'POST-CHILD'
+
+ r = app.put('/foos/bars/0')
+ assert r.status_int == 200
+ assert r.body == 'PUT-CHILD'
+
+ r = app.post('/foos/bars/bazs')
+ assert r.status_int == 200
+ assert r.body == 'POST-GRAND-CHILD'
+
+ r = app.put('/foos/bars/bazs/0')
+ assert r.status_int == 200
+ assert r.body == 'PUT-GRAND-CHILD'
+
+ r = app.get('/foos/bars/bazs/final/')
+ assert r.status_int == 200
+ assert r.body == 'FINAL'
+
+ r = app.get('/foos/bars/bazs/final/named')
+ assert r.status_int == 200
+ assert r.body == 'NAMED'