fixup! fixup! Refactor some trove admin bits, add some test coverage
diff --git a/Allura/allura/controllers/trovecategories.py b/Allura/allura/controllers/trovecategories.py
index 133638a..91450fd 100644
--- a/Allura/allura/controllers/trovecategories.py
+++ b/Allura/allura/controllers/trovecategories.py
@@ -39,7 +39,7 @@
class TroveAdminException(Exception):
- def __init__(self, flash_args, redir_params, upper):
+ def __init__(self, flash_args, redir_params='', upper=None):
super(TroveAdminException, self).__init__()
self.flash_args = flash_args
@@ -126,7 +126,7 @@
newid = max(
[el.trove_cat_id for el in M.TroveCategory.query.find()]) + 1
- shortname = h.slugify(shortname or name)[1]
+ shortname = h.slugify(shortname or name, True)[1]
if upper:
trove_type = upper.fullpath.split(' :: ')[0]
diff --git a/Allura/allura/tests/functional/test_trovecategory.py b/Allura/allura/tests/functional/test_trovecategory.py
index ceeeaaa..2dc438f 100644
--- a/Allura/allura/tests/functional/test_trovecategory.py
+++ b/Allura/allura/tests/functional/test_trovecategory.py
@@ -179,3 +179,23 @@
assert_equal(possible[0].fullname, 'New Child')
assert_equal(possible[0].shortname, 'new-child')
assert_equal(possible[0].trove_parent_id, 2)
+
+ # test slugify with periods. the relevant form becomes the third, after a child has been created above.
+ r = self.app.get('/categories/2')
+ form = r.forms[3]
+ form['categoryname'].value = "New Child.io"
+ form.submit()
+ possible = M.TroveCategory.query.find(dict(fullname='New Child.io')).all()
+ assert_equal(possible[0].shortname, 'new-child.io')
+
+ def test_create_child_bad_upper(self):
+ self.create_some_cats()
+ session(M.TroveCategory).flush()
+ r = self.app.get('/categories/2')
+
+ form = r.forms[2]
+ form['categoryname'].value = "New Child"
+ form['uppercategory_id'].value = "541561615"
+ r = form.submit().follow()
+
+ assert 'Invalid upper category' in r.text