ensure top level properties updated on rename

This commit is contained in:
Damien Elmes 2011-10-23 05:45:15 +09:00
parent f37f4aff96
commit 1ce5a7552e
2 changed files with 18 additions and 2 deletions

View file

@ -181,7 +181,14 @@ class GroupManager(object):
grp['name'] = grp['name'].replace(g['name']+ "::",
newName + "::")
self.save(grp)
# then update provided group
# adjust top level conf
if "::" in newName and "::" not in g['name']:
for k in defaultTopConf.keys():
del g[k]
elif "::" not in newName and "::" in g['name']:
for k,v in defaultTopConf.items():
g[k] = v
# adjust name and save
g['name'] = newName
self.save(g)
# finally, ensure we have parents

View file

@ -84,4 +84,13 @@ def test_rename():
for n in "yo", "yo::two", "yo::two::three":
assert n in d.groups.allNames()
def test_topRename():
d = getEmptyDeck()
id = d.groups.id("hello::world")
# when moving to or from top level, properties should be updated
assert 'newSpread' in d.groups.get(d.groups.id("hello"))
assert 'newSpread' not in d.groups.get(d.groups.id("hello::world"))
d.groups.rename(d.groups.get(d.groups.id("hello")), "foo::bar")
assert 'newSpread' not in d.groups.get(d.groups.id("foo::bar"))
d.groups.rename(d.groups.get(d.groups.id("foo::bar")), "hello")
assert 'newSpread' in d.groups.get(d.groups.id("hello"))