debian-koji/tests/test_hub/test_list_builds.py
2024-01-05 10:00:29 +00:00

111 lines
4.2 KiB
Python

import unittest
import mock
import kojihub
QP = kojihub.QueryProcessor
class TestListBuilds(unittest.TestCase):
def getQuery(self, *args, **kwargs):
query = QP(*args, **kwargs)
query.execute = mock.MagicMock()
query.executeOne = self.query_executeOne
query.iterate = mock.MagicMock()
self.queries.append(query)
return query
def setUp(self):
# defaults
self.tables= ['build']
self.columns = [
'build.id', 'build.completion_time',
"date_part('epoch', build.completion_time)",
'events.id', 'events.time',
"date_part('epoch', events.time)",
'build.draft',
'build.epoch',
'build.extra', 'package.name',
"package.name || '-' || build.version || '-' || "
"build.release", 'users.id', 'users.name', 'package.id',
'package.name', 'build.release', 'build.source',
'build.start_time', "date_part('epoch', build.start_time)",
'build.state', 'build.task_id', 'build.version',
'volume.id', 'volume.name'
]
self.clauses = ['package.id = %(packageID)i']
self.joins = [
'LEFT JOIN events ON build.create_event = events.id',
'LEFT JOIN package ON build.pkg_id = package.id',
'LEFT JOIN volume ON build.volume_id = volume.id',
'LEFT JOIN users ON build.owner = users.id'
]
self.maxDiff = None
self.exports = kojihub.RootExports()
self.query_executeOne = mock.MagicMock()
self.QueryProcessor = mock.patch('kojihub.kojihub.QueryProcessor',
side_effect=self.getQuery).start()
self.queries = []
self.context = mock.patch('kojihub.kojihub.context').start()
self.get_package_id = mock.patch('kojihub.kojihub.get_package_id').start()
self.get_user = mock.patch('kojihub.kojihub.get_user').start()
self.cursor = mock.MagicMock()
self.build_list = [{'build_id': 9,
'epoch': 0,
'name': 'test-package',
'nvr': 'test-package-11-12',
'owner_id': 1,
'owner_name': 'kojiadmin',
'package_id': 11,
'package_name': 'test-package',
'release': '12',
'state': 3,
'task_id': 879,
'version': '11',
'volume_id': 0,
'volume_name': 'DEFAULT',
'draft': False},]
def test_wrong_package(self):
package = 'test-package'
self.get_package_id.return_value = None
rv = self.exports.listBuilds(packageID=package)
self.assertEqual(rv, [])
def test_package_string(self):
package = 'test-package'
package_id = 1
self.get_package_id.return_value = package_id
self.query_executeOne.return_value = None
self.exports.listBuilds(packageID=package)
self.assertEqual(len(self.queries), 1)
args, kwargs = self.QueryProcessor.call_args
qp = QP(**kwargs)
self.assertEqual(qp.tables, self.tables)
self.assertEqual(qp.columns, self.columns)
self.assertEqual(qp.clauses, self.clauses)
self.assertEqual(qp.joins, self.joins)
def test_wrong_user(self):
user = 'test-user'
self.get_user.return_value = None
rv = self.exports.listBuilds(userID=user)
self.assertEqual(rv, [])
def test_draft(self):
package = 'test-package'
package_id = 1
self.get_package_id.return_value = package_id
self.query_executeOne.return_value = None
self.exports.listBuilds(packageID=package, draft=1)
self.assertEqual(len(self.queries), 1)
args, kwargs = self.QueryProcessor.call_args
qp = QP(**kwargs)
self.assertEqual(qp.tables, self.tables)
self.assertEqual(qp.columns, self.columns)
self.assertEqual(qp.clauses, ['draft IS TRUE'] + self.clauses)
self.assertEqual(qp.joins, self.joins)