summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBen Bangert <ben@groovie.org>2008-06-12 21:50:42 -0700
committerBen Bangert <ben@groovie.org>2008-06-12 21:50:42 -0700
commit470a4c0d728fdef30b308e039ece0dfe5d67c6d3 (patch)
tree938374831d932197a0a9537caa43d5aa0954c434 /tests
parent718ba5c9bd6a4e088dcb8fc622aa80fba66a0f06 (diff)
downloadroutes-470a4c0d728fdef30b308e039ece0dfe5d67c6d3.tar.gz
Add additional tests and use RouteException.
--HG-- branch : trunk
Diffstat (limited to 'tests')
-rw-r--r--tests/test_functional/test_generation.py43
-rw-r--r--tests/test_functional/test_utils.py43
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__':