diff options
author | Ben Bangert <ben@groovie.org> | 2008-06-12 21:50:42 -0700 |
---|---|---|
committer | Ben Bangert <ben@groovie.org> | 2008-06-12 21:50:42 -0700 |
commit | 470a4c0d728fdef30b308e039ece0dfe5d67c6d3 (patch) | |
tree | 938374831d932197a0a9537caa43d5aa0954c434 /tests | |
parent | 718ba5c9bd6a4e088dcb8fc622aa80fba66a0f06 (diff) | |
download | routes-470a4c0d728fdef30b308e039ece0dfe5d67c6d3.tar.gz |
Add additional tests and use RouteException.
--HG--
branch : trunk
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_functional/test_generation.py | 43 | ||||
-rw-r--r-- | tests/test_functional/test_utils.py | 43 |
2 files changed, 84 insertions, 2 deletions
diff --git a/tests/test_functional/test_generation.py b/tests/test_functional/test_generation.py index 96c0075..6274f15 100644 --- a/tests/test_functional/test_generation.py +++ b/tests/test_functional/test_generation.py @@ -1,7 +1,8 @@ """test_generation""" - import sys, time, unittest import urllib + +from nose.tools import eq_ from routes import * class TestGeneration(unittest.TestCase): @@ -269,6 +270,46 @@ class TestGeneration(unittest.TestCase): assert None == m.generate(controller='admin/comments', id=2) assert None == m.generate(controller='articles', action='find_by_date', year=2004) + def test_big_multiroute_with_nomin(self): + m = Mapper() + m.minimization = False + m.connect('', controller='articles', action='index') + m.connect('admin', controller='admin/general', action='index') + + m.connect('admin/comments/article/:article_id/:action/:id', controller = 'admin/comments', action=None, id=None) + m.connect('admin/trackback/article/:article_id/:action/:id', controller='admin/trackback', action=None, id=None) + m.connect('admin/content/:action/:id', controller='admin/content') + + m.connect('xml/:action/feed.xml', controller='xml') + m.connect('xml/articlerss/:id/feed.xml', controller='xml', action='articlerss') + m.connect('index.rdf', controller='xml', action='rss') + + m.connect('articles', controller='articles', action='index') + m.connect('articles/page/:page', controller='articles', action='index', requirements = {'page':'\d+'}) + + m.connect('articles/:year/:month/:day/page/:page', controller='articles', action='find_by_date', month = None, day = None, + requirements = {'year':'\d{4}', 'month':'\d{1,2}','day':'\d{1,2}'}) + m.connect('articles/category/:id', controller='articles', action='category') + m.connect('pages/*name', controller='articles', action='view_page') + + + assert '/pages/the/idiot/has/spoken' == m.generate(controller='articles', action='view_page', + name='the/idiot/has/spoken') + assert '/' == m.generate(controller='articles', action='index') + assert '/xml/articlerss/4/feed.xml' == m.generate(controller='xml', action='articlerss', id=4) + assert '/xml/rss/feed.xml' == m.generate(controller='xml', action='rss') + assert '/admin/comments/article/4/view/2' == m.generate(controller='admin/comments', action='view', article_id=4, id=2) + assert '/admin' == m.generate(controller='admin/general') + assert '/articles/2004/2/20/page/1' == m.generate(controller='articles', action='find_by_date', + year=2004, month=2, day=20, page=1) + assert None == m.generate(controller='articles', action='category') + assert '/articles/category/4' == m.generate(controller='articles', action='category', id=4) + assert '/xml/index/feed.xml' == m.generate(controller='xml') + assert '/xml/articlerss/feed.xml' == m.generate(controller='xml', action='articlerss') + + assert None == m.generate(controller='admin/comments', id=2) + assert None == m.generate(controller='articles', action='find_by_date', year=2004) + def test_no_extras(self): m = Mapper() m.connect(':controller/:action/:id') diff --git a/tests/test_functional/test_utils.py b/tests/test_functional/test_utils.py index bf39e66..5db00cd 100644 --- a/tests/test_functional/test_utils.py +++ b/tests/test_functional/test_utils.py @@ -558,7 +558,23 @@ class TestUtilsWithExplicit(unittest.TestCase): self.assertEqual('/category/food', url_for('category_home', section='food')) self.assertRaises(Exception, url_for, 'home', controller='content') self.assertEqual('/', url_for('home')) - + + def test_with_route_names_and_nomin(self): + m = self.con.mapper + m.minimization = False + self.con.mapper_dict = {} + m.connect('home', '', controller='blog', action='splash') + m.connect('category_home', 'category/:section', controller='blog', action='view', section='home') + m.create_regs(['content','blog','admin/comments']) + + self.assertRaises(Exception, url_for, controller='content', action='view') + self.assertRaises(Exception, url_for, controller='content') + self.assertRaises(Exception, url_for, controller='admin/comments') + self.assertEqual('/category/home', url_for('category_home')) + self.assertEqual('/category/food', url_for('category_home', section='food')) + self.assertRaises(Exception, url_for, 'home', controller='content') + self.assertEqual('/', url_for('home')) + def test_with_route_names_and_defaults(self): m = self.con.mapper self.con.mapper_dict = {} @@ -595,6 +611,31 @@ class TestUtilsWithExplicit(unittest.TestCase): self.assertEqual('/messages/4/edit.xml', url_for('formatted_edit_message', id=4, format='xml')) self.assertEqual('/messages/4/mark.xml', url_for('formatted_mark_message', id=4, format='xml')) self.assertEqual('/messages/new.xml', url_for('formatted_new_message', format='xml')) + + def test_with_resource_route_names_and_nomin(self): + m = Mapper() + self.con.mapper = m + self.con.mapper_dict = {} + m.minimization = False + m.resource('message', 'messages', member={'mark':'GET'}, collection={'rss':'GET'}) + m.create_regs(['messages']) + + self.assertRaises(Exception, url_for, controller='content', action='view') + self.assertRaises(Exception, url_for, controller='content') + self.assertRaises(Exception, url_for, controller='admin/comments') + self.assertEqual('/messages', url_for('messages')) + self.assertEqual('/messages/rss', url_for('rss_messages')) + self.assertEqual('/messages/4', url_for('message', id=4)) + self.assertEqual('/messages/4/edit', url_for('edit_message', id=4)) + self.assertEqual('/messages/4/mark', url_for('mark_message', id=4)) + self.assertEqual('/messages/new', url_for('new_message')) + + self.assertEqual('/messages.xml', url_for('formatted_messages', format='xml')) + self.assertEqual('/messages/rss.xml', url_for('formatted_rss_messages', format='xml')) + self.assertEqual('/messages/4.xml', url_for('formatted_message', id=4, format='xml')) + self.assertEqual('/messages/4/edit.xml', url_for('formatted_edit_message', id=4, format='xml')) + self.assertEqual('/messages/4/mark.xml', url_for('formatted_mark_message', id=4, format='xml')) + self.assertEqual('/messages/new.xml', url_for('formatted_new_message', format='xml')) if __name__ == '__main__': |