summaryrefslogtreecommitdiff
path: root/cliff/tests/test_lister.py
diff options
context:
space:
mode:
Diffstat (limited to 'cliff/tests/test_lister.py')
-rw-r--r--cliff/tests/test_lister.py72
1 files changed, 70 insertions, 2 deletions
diff --git a/cliff/tests/test_lister.py b/cliff/tests/test_lister.py
index 9434ce6..05061db 100644
--- a/cliff/tests/test_lister.py
+++ b/cliff/tests/test_lister.py
@@ -40,10 +40,15 @@ class ExerciseLister(lister.Lister):
def take_action(self, parsed_args):
return (
parsed_args.columns,
- [('a', 'A'), ('b', 'B')],
+ [('a', 'A'), ('b', 'B'), ('c', 'A')],
)
+class ExerciseListerCustomSort(ExerciseLister):
+
+ need_sort_by_cliff = False
+
+
class TestLister(base.TestBase):
def test_formatter_args(self):
@@ -53,20 +58,23 @@ class TestLister(base.TestBase):
parsed_args = mock.Mock()
parsed_args.columns = ('Col1', 'Col2')
parsed_args.formatter = 'test'
+ parsed_args.sort_columns = []
test_lister.run(parsed_args)
+
f = test_lister._formatter_plugins['test']
self.assertEqual(1, len(f.args))
args = f.args[0]
self.assertEqual(list(parsed_args.columns), args[0])
data = list(args[1])
- self.assertEqual([['a', 'A'], ['b', 'B']], data)
+ self.assertEqual([['a', 'A'], ['b', 'B'], ['c', 'A']], data)
def test_no_exist_column(self):
test_lister = ExerciseLister(mock.Mock(), [])
parsed_args = mock.Mock()
parsed_args.columns = ('no_exist_column',)
parsed_args.formatter = 'test'
+ parsed_args.sort_columns = []
with mock.patch.object(test_lister, 'take_action') as mock_take_action:
mock_take_action.return_value = (('Col1', 'Col2', 'Col3'), [])
self.assertRaises(
@@ -74,3 +82,63 @@ class TestLister(base.TestBase):
test_lister.run,
parsed_args,
)
+
+ def test_sort_by_column_cliff_side_procedure(self):
+ test_lister = ExerciseLister(mock.Mock(), [])
+ parsed_args = mock.Mock()
+ parsed_args.columns = ('Col1', 'Col2')
+ parsed_args.formatter = 'test'
+ parsed_args.sort_columns = ['Col2', 'Col1']
+
+ test_lister.run(parsed_args)
+
+ f = test_lister._formatter_plugins['test']
+ args = f.args[0]
+ data = list(args[1])
+ self.assertEqual([['a', 'A'], ['c', 'A'], ['b', 'B']], data)
+
+ def test_sort_by_column_data_already_sorted(self):
+ test_lister = ExerciseListerCustomSort(mock.Mock(), [])
+ parsed_args = mock.Mock()
+ parsed_args.columns = ('Col1', 'Col2')
+ parsed_args.formatter = 'test'
+ parsed_args.sort_columns = ['Col2', 'Col1']
+
+ test_lister.run(parsed_args)
+
+ f = test_lister._formatter_plugins['test']
+ args = f.args[0]
+ data = list(args[1])
+ self.assertEqual([['a', 'A'], ['b', 'B'], ['c', 'A']], data)
+
+ def test_sort_by_non_displayed_column(self):
+ test_lister = ExerciseLister(mock.Mock(), [])
+ parsed_args = mock.Mock()
+ parsed_args.columns = ('Col1',)
+ parsed_args.formatter = 'test'
+ parsed_args.sort_columns = ['Col2']
+
+ with mock.patch.object(test_lister, 'take_action') as mock_take_action:
+ mock_take_action.return_value = (
+ ('Col1', 'Col2'), [['a', 'A'], ['b', 'B'], ['c', 'A']]
+ )
+ test_lister.run(parsed_args)
+
+ f = test_lister._formatter_plugins['test']
+ args = f.args[0]
+ data = list(args[1])
+ self.assertEqual([['a'], ['c'], ['b']], data)
+
+ def test_sort_by_non_existing_column(self):
+ test_lister = ExerciseLister(mock.Mock(), [])
+ parsed_args = mock.Mock()
+ parsed_args.columns = ('Col1', 'Col2')
+ parsed_args.formatter = 'test'
+ parsed_args.sort_columns = ['no_exist_column']
+
+ test_lister.run(parsed_args)
+
+ f = test_lister._formatter_plugins['test']
+ args = f.args[0]
+ data = list(args[1])
+ self.assertEqual([['a', 'A'], ['b', 'B'], ['c', 'A']], data)