111 lines
4.2 KiB
Python
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)
|