debian-koji/tests/test_hub/test_query_buildroots.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

74 lines
3.5 KiB
Python

import unittest
from unittest import mock
import kojihub
QP = kojihub.QueryProcessor
class TestQueryBuildroots(unittest.TestCase):
def getQuery(self, *args, **kwargs):
query = QP(*args, **kwargs)
query.execute = self.query_execute
self.queries.append(query)
return query
def setUp(self):
self.QueryProcessor = mock.patch('kojihub.kojihub.QueryProcessor',
side_effect=self.getQuery).start()
self.repo_references = mock.patch('kojihub.kojihub.repo_references').start()
self.queries = []
self.query_execute = mock.MagicMock()
def tearDown(self):
mock.patch.stopall()
def test_query_buildroots(self):
self.query_execute.side_effect = [[7], [7], [7], []]
self.repo_references.return_value = [{'id': 7, 'host_id': 1, 'create_event': 333,
'state': 1}]
kojihub.query_buildroots(hostID=1, tagID=2, state=1, rpmID=3, archiveID=4, taskID=5,
buildrootID=7, repoID=10)
self.assertEqual(len(self.queries), 4)
query = self.queries[0]
self.assertEqual(query.tables, ['buildroot_listing'])
self.assertEqual(query.columns, ['buildroot_id'])
self.assertEqual(query.clauses, ['rpm_id = %(rpmID)i'])
self.assertEqual(query.joins, None)
query = self.queries[1]
self.assertEqual(query.tables, ['buildroot_archives'])
self.assertEqual(query.columns, ['buildroot_id'])
self.assertEqual(query.clauses, ['archive_id = %(archiveID)i'])
self.assertEqual(query.joins, None)
query = self.queries[2]
self.assertEqual(query.tables, ['standard_buildroot'])
self.assertEqual(query.columns, ['buildroot_id'])
self.assertEqual(query.clauses, ['task_id = %(taskID)i'])
self.assertEqual(query.joins, None)
query = self.queries[3]
self.assertEqual(query.tables, ['standard_buildroot'])
self.assertEqual(query.columns, ['buildroot_id'])
self.assertEqual(query.clauses, ['repo_id = %(repoID)i'])
self.assertEqual(query.joins, None)
def test_query_buildroots_some_params_as_list(self):
kojihub.query_buildroots(state=[1], buildrootID=[7])
self.assertEqual(len(self.queries), 1)
query = self.queries[0]
self.assertEqual(query.tables, ['buildroot'])
self.assertEqual(query.clauses, ['buildroot.id IN %(buildrootID)s',
'standard_buildroot.state IN %(state)s'])
self.assertEqual(query.joins,
['LEFT OUTER JOIN standard_buildroot ON '
'standard_buildroot.buildroot_id = buildroot.id',
'LEFT OUTER JOIN content_generator ON '
'buildroot.cg_id = content_generator.id',
'LEFT OUTER JOIN host ON host.id = standard_buildroot.host_id',
'LEFT OUTER JOIN repo ON repo.id = standard_buildroot.repo_id',
'LEFT OUTER JOIN tag ON tag.id = repo.tag_id',
'LEFT OUTER JOIN events AS create_events ON '
'create_events.id = standard_buildroot.create_event',
'LEFT OUTER JOIN events AS retire_events ON '
'standard_buildroot.retire_event = retire_events.id',
'LEFT OUTER JOIN events AS repo_create ON '
'repo_create.id = repo.create_event'])