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

56 lines
2.1 KiB
Python

from unittest import mock
import unittest
import kojihub
import koji
UP = kojihub.UpdateProcessor
class TestSetBuildTimestamp(unittest.TestCase):
def getUpdate(self, *args, **kwargs):
update = UP(*args, **kwargs)
update.execute = mock.MagicMock()
self.updates.append(update)
return update
def setUp(self):
self.UpdateProcessor = mock.patch('kojihub.kojihub.UpdateProcessor',
side_effect=self.getUpdate).start()
self.updates = []
self.context = mock.patch('kojihub.kojihub.context').start()
# It seems MagicMock will not automatically handle attributes that
# start with "assert"
self.context.session.assertLogin = mock.MagicMock()
self.context.session.assertPerm = mock.MagicMock()
self.exports = kojihub.RootExports()
self.get_build = mock.patch('kojihub.kojihub.get_build').start()
self.run_callbacks = mock.patch('koji.plugin.run_callbacks').start()
self.buildinfo_old = {'completion_ts': 1671466000.613543, 'id': 111}
self.buildinfo_new = {'completion_ts': 1671468684.613543, 'id': 111}
def tearDown(self):
mock.patch.stopall()
def test_ts_not_correct_type(self):
build_id = 111
ts = 'wrong-type-ts'
self.get_build.return_value = self.buildinfo_old
with self.assertRaises(koji.GenericError) as cm:
self.exports.setBuildTimestamp(build_id, ts)
self.assertEqual("Invalid type for timestamp", str(cm.exception))
def test_valid(self):
build_id = 111
ts = 1671468684.613543
self.get_build.side_effect = [self.buildinfo_old, self.buildinfo_new]
self.exports.setBuildTimestamp(build_id, ts)
update = self.updates[0]
self.assertEqual(update.table, 'build')
self.assertEqual(update.data, {})
self.assertEqual(update.rawdata, {
'completion_time':
f"TIMESTAMP 'epoch' AT TIME ZONE 'utc' + '{ts:f} seconds'::interval"})
self.assertEqual(update.clauses, ['id = %(buildid)i'])
self.assertEqual(update.values, {'buildid': build_id})