sort menu items
This commit is contained in:
45
raven/plugins/domain/testmenucontribution.py
Normal file
45
raven/plugins/domain/testmenucontribution.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import unittest
|
||||
from random import shuffle
|
||||
|
||||
from raven.plugins.domain.menucontribution import MenuContribution, sort_menu_contributions
|
||||
|
||||
|
||||
class MyTestCase(unittest.TestCase):
|
||||
def test_sort(self):
|
||||
items = [
|
||||
MenuContribution("menuId", action_id="a", after=None),
|
||||
MenuContribution("menuId", action_id="b", after="a"),
|
||||
MenuContribution("menuId", action_id="c", after="a"),
|
||||
MenuContribution("menuId", action_id="d", after="b"),
|
||||
MenuContribution("menuId", action_id="e", after="d"),
|
||||
]
|
||||
shuffle(items)
|
||||
|
||||
actual = sort_menu_contributions(items)
|
||||
ordered_ids = ""
|
||||
for a in actual:
|
||||
ordered_ids = ordered_ids + a.action_id
|
||||
self.assertEqual("abcde", ordered_ids)
|
||||
|
||||
def test_sort_with_cycle(self):
|
||||
"""
|
||||
There is a cycle between a and b. This is resolved, because neither is set in the recursive
|
||||
part of the method. After the recursive part the remaining items are added in order of
|
||||
their action_id.
|
||||
:return:
|
||||
"""
|
||||
items = [
|
||||
MenuContribution("menuId", action_id="a", after="b"),
|
||||
MenuContribution("menuId", action_id="b", after="a"),
|
||||
]
|
||||
shuffle(items)
|
||||
|
||||
actual = sort_menu_contributions(items)
|
||||
ordered_ids = ""
|
||||
for a in actual:
|
||||
ordered_ids = ordered_ids + a.action_id
|
||||
self.assertEqual("ab", ordered_ids)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user