Add unit tests for koji commands
This commit is contained in:
parent
d331fdfa11
commit
f16f26be63
17 changed files with 3502 additions and 16 deletions
92
tests/test_cli/test_search.py
Normal file
92
tests/test_cli/test_search.py
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
from __future__ import absolute_import
|
||||
import mock
|
||||
import six
|
||||
import unittest
|
||||
|
||||
from koji_cli.commands import anon_handle_search
|
||||
from . import utils
|
||||
|
||||
|
||||
class TestSearch(utils.CliTestCase):
|
||||
|
||||
# Show long diffs in error output...
|
||||
maxDiff = None
|
||||
|
||||
def setUp(self):
|
||||
self.error_format = """Usage: %s search [options] search_type pattern
|
||||
Available search types: package, build, tag, target, user, host, rpm, maven, win
|
||||
(Specify the --help global option for a list of other help options)
|
||||
|
||||
%s: error: {message}
|
||||
""" % (self.progname, self.progname)
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=six.StringIO)
|
||||
def test_anon_handle_search(
|
||||
self,
|
||||
stdout):
|
||||
"""Test anon_handle_search function"""
|
||||
session = mock.MagicMock()
|
||||
options = mock.MagicMock()
|
||||
s_type, s_pattern = 'build', 'fedora'
|
||||
arguments = [s_type, s_pattern]
|
||||
|
||||
search_results = [
|
||||
{'id': 166, 'name': 'f25'},
|
||||
{'id': 177, 'name': 'f26'},
|
||||
{'id': 202, 'name': 'f27'}
|
||||
]
|
||||
|
||||
session.search.return_value = search_results
|
||||
expected = ''.join('%s\n' % x['name'] for x in search_results)
|
||||
|
||||
# Case 1. normal search
|
||||
anon_handle_search(options, session, arguments)
|
||||
self.assert_console_message(stdout, expected)
|
||||
session.search.assert_called_with(s_pattern, s_type, 'glob')
|
||||
|
||||
# Case 2. exact match
|
||||
anon_handle_search(options, session, arguments + ['--exact'])
|
||||
self.assert_console_message(stdout, expected)
|
||||
session.search.assert_called_with(s_pattern, s_type, 'exact')
|
||||
|
||||
# Case 3. regex match
|
||||
anon_handle_search(options, session, arguments + ['-r'])
|
||||
self.assert_console_message(stdout, expected)
|
||||
session.search.assert_called_with(s_pattern, s_type, 'regexp')
|
||||
|
||||
def test_anon_handle_search_argument_error(self):
|
||||
"""Test anon_handle_search function with argument error"""
|
||||
s_type, s_patt = 'unknown', 'unknown'
|
||||
cases = [
|
||||
{'argument': [], 'error': 'Please specify search type'},
|
||||
{'argument': [s_type], 'error': 'Please specify search pattern'},
|
||||
{'argument': [s_type, s_patt],
|
||||
'error': 'Unknown search type: %s' % s_type}
|
||||
]
|
||||
|
||||
for case in cases:
|
||||
expected = self.format_error_message(case['error'])
|
||||
self.assert_system_exit(
|
||||
anon_handle_search,
|
||||
mock.MagicMock(),
|
||||
mock.MagicMock(),
|
||||
case['argument'],
|
||||
stderr=expected,
|
||||
activate_session=None)
|
||||
|
||||
def test_anon_handle_search_help(self):
|
||||
self.assert_help(
|
||||
anon_handle_search,
|
||||
"""Usage: %s search [options] search_type pattern
|
||||
Available search types: package, build, tag, target, user, host, rpm, maven, win
|
||||
(Specify the --help global option for a list of other help options)
|
||||
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
-r, --regex treat pattern as regex
|
||||
--exact exact matches only
|
||||
""" % self.progname)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue