unit test for get_rpm preferences

This commit is contained in:
Mike McLean 2024-01-04 19:11:53 -05:00 committed by Yu Ming Zhu
parent c5395a5a8f
commit c944ef36a1

View file

@ -121,6 +121,45 @@ class TestGetRPM(DBQueryTestCase):
['external_repo ON rpminfo.external_repo_id = external_repo.id'])
self.assertEqual(query.values, rpminfo_data)
@mock.patch('kojihub.kojihub._get_rpms')
def test_rpm_info_preferred(self, _get_rpms):
rpminfo = 'testrpm-1.23-4.x86_64.rpm'
rpm_ext = {'id': 1, 'external_repo_id': 2, 'draft': False}
rpm_ext2 = {'id': 2, 'external_repo_id': 2, 'draft': False}
rpm_draft = {'id': 3, 'external_repo_id': 0, 'draft': True}
rpm_draft2 = {'id': 4, 'external_repo_id': 0, 'draft': True}
rpm_nondraft = {'id': 5, 'external_repo_id': 0, 'draft': False}
# this test checks that the expected preferences are followed for multiple matches
_get_rpms.return_value = [rpm_ext, rpm_ext2, rpm_draft, rpm_draft2, rpm_nondraft]
ret = kojihub.get_rpm(rpminfo, multi=False)
self.assertEqual(ret, rpm_nondraft)
_get_rpms.return_value = [rpm_ext, rpm_ext2, rpm_draft, rpm_draft2]
ret = kojihub.get_rpm(rpminfo, multi=False)
self.assertEqual(ret, rpm_draft2)
_get_rpms.return_value = [rpm_ext, rpm_ext2, rpm_draft]
ret = kojihub.get_rpm(rpminfo, multi=False)
self.assertEqual(ret, rpm_draft)
_get_rpms.return_value = [rpm_ext, rpm_ext2]
ret = kojihub.get_rpm(rpminfo, multi=False)
self.assertEqual(ret, rpm_ext2)
_get_rpms.return_value = [rpm_ext]
ret = kojihub.get_rpm(rpminfo, multi=False)
self.assertEqual(ret, rpm_ext)
# multiple nondraft matches should error
rpm_bad = {'id': 6, 'external_repo_id': 0, 'draft': False}
_get_rpms.return_value = [rpm_nondraft, rpm_bad]
with self.assertRaises(koji.GenericError):
ret = kojihub.get_rpm(rpminfo, multi=False)
self.assertEqual(len(self.queries), 0) # _get_rpm is mocked
class TestGetRPMHeaders(unittest.TestCase):