debian-koji/tests/test_hub/test_get_build.py
Yuming Zhu ca05418fb5 unittest: use unittest.mock instead of mock
because the absence of unittest.mock on python2.7, we still fallback to
mock
2024-10-23 16:35:30 +00:00

94 lines
4 KiB
Python

from unittest import mock
import koji
import kojihub
from .utils import DBQueryTestCase
class TestGetBuild(DBQueryTestCase):
def setUp(self):
super(TestGetBuild, self).setUp()
self.find_build_id = mock.patch('kojihub.kojihub.find_build_id').start()
self.lookup_name = mock.patch('kojihub.kojihub.lookup_name').start()
def tearDown(self):
mock.patch.stopall()
def test_non_exist_build_string_with_strict(self):
build = 'build-1-23'
self.find_build_id.side_effect = koji.GenericError('No such build: %s' % build)
with self.assertRaises(koji.GenericError) as cm:
kojihub.get_build(build, strict=True)
self.assertEqual('No such build: %s' % build, str(cm.exception))
self.find_build_id.assert_called_once_with(build, strict=True)
self.assertEqual(len(self.queries), 0)
def test_non_exist_build_int_without_result_with_strict(self):
build = 11
self.find_build_id.return_value = build
with self.assertRaises(koji.GenericError) as cm:
kojihub.get_build(build, strict=True)
self.assertEqual('No such build: %s' % build, str(cm.exception))
self.find_build_id.assert_called_once_with(build, strict=True)
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['build'])
self.assertEqual(query.clauses, ['build.id = %(buildID)i'])
def test_non_exist_build_int_without_result_without_strict(self):
build = 11
self.find_build_id.return_value = build
result = kojihub.get_build(build, strict=False)
self.assertEqual(result, None)
self.find_build_id.assert_called_once_with(build, strict=False)
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['build'])
self.assertEqual(query.clauses, ['build.id = %(buildID)i'])
def test_non_exist_build_dict_with_strict(self):
build = {
'name': 'test_name',
'version': 'test_version',
'release': 'test_release',
}
self.find_build_id.side_effect = koji.GenericError('No such build: %s' % build['name'])
with self.assertRaises(koji.GenericError) as cm:
kojihub.get_build(build, strict=True)
self.assertEqual('No such build: %s' % build['name'], str(cm.exception))
self.find_build_id.assert_called_once_with(build, strict=True)
self.assertEqual(len(self.queries), 0)
def test_build_none_exist_without_strict(self):
build = 'build-1-23'
self.find_build_id.return_value = None
result = kojihub.get_build(build, strict=False)
self.assertEqual(result, None)
self.find_build_id.assert_called_once_with(build, strict=False)
self.assertEqual(len(self.queries), 0)
def test_result_with_cg_id_none(self):
build = 11
self.find_build_id.return_value = build
self.qp_execute_one_return_value = {'cg_id': None}
result = kojihub.get_build(build, strict=True)
self.assertEqual(result, {'cg_id': None, 'cg_name': None})
self.find_build_id.assert_called_once_with(build, strict=True)
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['build'])
self.assertEqual(query.clauses, ['build.id = %(buildID)i'])
def test_result_with_cg_id(self):
build = 11
self.find_build_id.return_value = build
self.lookup_name.return_value = {'name': 'cg_name'}
self.qp_execute_one_return_value = {'cg_id': 1}
result = kojihub.get_build(build, strict=True)
self.assertEqual(result, {'cg_id': 1, 'cg_name': 'cg_name'})
self.find_build_id.assert_called_once_with(build, strict=True)
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['build'])
self.assertEqual(query.clauses, ['build.id = %(buildID)i'])