@@ -58,6 +58,68 @@ def test_get_password_cntrl_d(self):
5858 utils .get_password ,
5959 mock_stdin )
6060
61+ def get_test_items (self ):
62+ item1 = {'a' : 1 , 'b' : 2 }
63+ item2 = {'a' : 1 , 'b' : 3 }
64+ item3 = {'a' : 2 , 'b' : 2 }
65+ item4 = {'a' : 2 , 'b' : 1 }
66+ return [item1 , item2 , item3 , item4 ]
67+
68+ def test_sort_items_with_one_key (self ):
69+ items = self .get_test_items ()
70+ sort_str = 'b'
71+ expect_items = [items [3 ], items [0 ], items [2 ], items [1 ]]
72+ self .assertEqual (expect_items , utils .sort_items (items , sort_str ))
73+
74+ def test_sort_items_with_multiple_keys (self ):
75+ items = self .get_test_items ()
76+ sort_str = 'a,b'
77+ expect_items = [items [0 ], items [1 ], items [3 ], items [2 ]]
78+ self .assertEqual (expect_items , utils .sort_items (items , sort_str ))
79+
80+ def test_sort_items_all_with_direction (self ):
81+ items = self .get_test_items ()
82+ sort_str = 'a:desc,b:desc'
83+ expect_items = [items [2 ], items [3 ], items [1 ], items [0 ]]
84+ self .assertEqual (expect_items , utils .sort_items (items , sort_str ))
85+
86+ def test_sort_items_some_with_direction (self ):
87+ items = self .get_test_items ()
88+ sort_str = 'a,b:desc'
89+ expect_items = [items [1 ], items [0 ], items [2 ], items [3 ]]
90+ self .assertEqual (expect_items , utils .sort_items (items , sort_str ))
91+
92+ def test_sort_items_with_object (self ):
93+ item1 = mock .Mock (a = 1 , b = 2 )
94+ item2 = mock .Mock (a = 1 , b = 3 )
95+ item3 = mock .Mock (a = 2 , b = 2 )
96+ item4 = mock .Mock (a = 2 , b = 1 )
97+ items = [item1 , item2 , item3 , item4 ]
98+ sort_str = 'b,a'
99+ expect_items = [item4 , item1 , item3 , item2 ]
100+ self .assertEqual (expect_items , utils .sort_items (items , sort_str ))
101+
102+ def test_sort_items_with_empty_key (self ):
103+ items = self .get_test_items ()
104+ sort_srt = ''
105+ self .assertEqual (items , utils .sort_items (items , sort_srt ))
106+ sort_srt = None
107+ self .assertEqual (items , utils .sort_items (items , sort_srt ))
108+
109+ def test_sort_items_with_invalid_key (self ):
110+ items = self .get_test_items ()
111+ sort_str = 'c'
112+ self .assertRaises (exceptions .CommandError ,
113+ utils .sort_items ,
114+ items , sort_str )
115+
116+ def test_sort_items_with_invalid_direction (self ):
117+ items = self .get_test_items ()
118+ sort_str = 'a:bad_dir'
119+ self .assertRaises (exceptions .CommandError ,
120+ utils .sort_items ,
121+ items , sort_str )
122+
61123
62124class NoUniqueMatch (Exception ):
63125 pass
0 commit comments