summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalim Fadhley <sal@stodge.org>2014-08-02 16:09:55 +0100
committerSalim Fadhley <sal@stodge.org>2014-08-02 16:09:55 +0100
commitffcaac777b7fb95426d405e3ffda663d1ff42c47 (patch)
treecf40ee4e01037910f969ad2b137e5b7b77fb8a8c
parenta4c3fab827673da3c70e834ffd4d362f24190de1 (diff)
downloadpython-jenkinsapi-ffcaac777b7fb95426d405e3ffda663d1ff42c47.tar.gz
python-jenkinsapi-ffcaac777b7fb95426d405e3ffda663d1ff42c47.tar.bz2
python-jenkinsapi-ffcaac777b7fb95426d405e3ffda663d1ff42c47.zip
fix a bunch of tests
-rw-r--r--jenkinsapi/queue.py24
-rw-r--r--jenkinsapi_tests/unittests/test_queue.py71
2 files changed, 52 insertions, 43 deletions
diff --git a/jenkinsapi/queue.py b/jenkinsapi/queue.py
index 967ccf0..388697c 100644
--- a/jenkinsapi/queue.py
+++ b/jenkinsapi/queue.py
@@ -60,15 +60,17 @@ class Queue(JenkinsBase):
else:
raise UnknownQueueItem(item_id)
- def get_queue_items_for_job(self, job_name=''):
- if not job_name:
- return [QueueItem(self.jenkins, **item)
- for item in self._data['items']]
- else:
- return [QueueItem(self.jenkins, **item)
- for item in self._data['items']
- if item['task']['name'] == job_name]
-
+ def _get_queue_items_for_job(self, job_name):
+ for item in self._data["items"]:
+ if item['task']['name'] == job_name:
+ yield QueueItem(self.get_queue_item_url(item), jenkins_obj=self.jenkins)
+
+ def get_queue_items_for_job(self, job_name):
+ return list(self._get_queue_items_for_job(job_name))
+
+ def get_queue_item_url(self, item):
+ return "%s/item/%i" % (self.baseurl, item["id"])
+
def delete_item(self, queue_item):
self.delete_item_by_id(queue_item.id)
@@ -97,11 +99,11 @@ class QueueItem(JenkinsBase):
"""
Return the job associated with this queue item
"""
- return self.jenkins[self.task['name']]
+ return self.jenkins[self._data['task']['name']]
def get_parameters(self):
"""returns parameters of queue item"""
- actions = getattr(self, 'actions', [])
+ actions = self._data.get('actions', [])
for action in actions:
if type(action) is dict and 'parameters' in action:
parameters = action['parameters']
diff --git a/jenkinsapi_tests/unittests/test_queue.py b/jenkinsapi_tests/unittests/test_queue.py
index d473cbb..8ace52f 100644
--- a/jenkinsapi_tests/unittests/test_queue.py
+++ b/jenkinsapi_tests/unittests/test_queue.py
@@ -13,35 +13,14 @@ from jenkinsapi.job import Job
class FourOhFourError(Exception):
+
"""
Missing fake data
"""
class TestQueue(unittest.TestCase):
-
- @classmethod
- def mockGetData(self, url):
- try:
- return TestQueue.URL_DATA[url]
- except KeyError:
- raise FourOhFourError(url)
-
- URL_DATA = {}
-
- URL_DATA['http://localhost:8080/%s' % config.JENKINS_API] = {
- 'jobs': [
- {
- 'name': 'utmebvpxrw',
- 'color': 'blue',
- 'url': 'http://localhost/job/utmebvpxrw'
- }
- ]
- }
-
- URL_DATA['http://localhost/job/utmebvpxrw/%s' % config.JENKINS_API] = {}
-
- URL_DATA['http://localhost:8080/queue/%s' % config.JENKINS_API] = {
+ QUEUE_DATA = {
'items': [
{
'actions': [
@@ -52,7 +31,10 @@ class TestQueue(unittest.TestCase):
'userId': None,
'userName': 'anonymous'
}
- ]
+ ],
+ 'parameters':
+ [{'name': 'name1', 'value': 'value1'},
+ {'name': 'node'}]
}
],
'blocked': False,
@@ -124,6 +106,36 @@ class TestQueue(unittest.TestCase):
]
}
+ @classmethod
+ def mockGetData(self, url):
+ try:
+ return TestQueue.URL_DATA[url]
+ except KeyError:
+ raise FourOhFourError(url)
+
+ URL_DATA = {}
+
+ URL_DATA['http://localhost:8080/%s' % config.JENKINS_API] = {
+ 'jobs': [
+ {
+ 'name': 'utmebvpxrw',
+ 'color': 'blue',
+ 'url': 'http://localhost/job/utmebvpxrw'
+ }
+ ]
+ }
+
+ URL_DATA['http://localhost/job/utmebvpxrw/%s' % config.JENKINS_API] = {}
+
+ URL_DATA['http://localhost:8080/queue/%s' %
+ config.JENKINS_API] = QUEUE_DATA
+
+ for item in QUEUE_DATA['items']:
+ url = 'http://localhost:8080/queue/item/%i/%s' % (
+ item['id'], config.JENKINS_API)
+ print(url)
+ URL_DATA[url] = item
+
@mock.patch.object(JenkinsBase, 'get_data', mockGetData)
def setUp(self):
self.J = Jenkins('http://localhost:8080') # Jenkins
@@ -138,6 +150,7 @@ class TestQueue(unittest.TestCase):
def test_list_items(self):
self.assertEquals(set(self.q.keys()), set([40, 41, 42]))
+ @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
def test_getitem(self):
item40 = self.q[40]
self.assertIsInstance(item40, QueueItem)
@@ -155,16 +168,10 @@ class TestQueue(unittest.TestCase):
self.assertEquals(len(item40), 1)
self.assertIsInstance(item40[0], QueueItem)
- item40 = self.q.get_queue_items_for_job()
- self.assertIsInstance(item40, list)
- self.assertEquals(len(item40), 3)
+ @mock.patch.object(JenkinsBase, 'get_data', mockGetData)
def test_qi_get_parameters(self):
- act = [{'parameters':
- [{'name': 'name1', 'value': 'value1'},
- {'name': 'node'}]}]
- qi = QueueItem(jenkins=None, actions=act)
-
+ qi = self.q[42]
self.assertEquals(qi.get_parameters(), {'name1': 'value1',
'node': None})