def __str__(self):
return self.name
- def __getitem__(self, str_job_id):
- assert isinstance(str_job_id, str)
- api_url = self.python_api_url(self.get_job_url(str_job_id))
- return Job(api_url, str_job_id, self.jenkins_obj)
+ def __getitem__(self, job_name):
+ assert isinstance(job_name, str)
+ api_url = self.python_api_url(self.get_job_url(job_name))
+ return Job(api_url, job_name, self.jenkins_obj)
+
+ def __contains__(self, job_name):
+ """
+ True if view_name is the name of a defined view
+ """
+ return job_name in self.keys()
def delete(self):
"""
import unittest
from jenkinsapi.view import View
+from jenkinsapi.views import Views
from jenkinsapi.api import get_view_from_url
from jenkinsapi_tests.systests.base import BaseSystemTest
from jenkinsapi_tests.test_utils.random_strings import random_string
self.assertIn(view_name, self.jenkins.views())
self.assertIsInstance(v, View)
- # Can we use the API comnvenience methods
+ # Can we use the API convenience methods
v2 = get_view_from_url(v.baseurl)
self.assertEquals(v, v2)
del self.jenkins.views()[view1_name]
self.assertNotIn(view1_name, self.jenkins.views())
+ def test_make_nested_views(self):
+ job = self._create_job()
+ top_view_name = random_string()
+ sub1_view_name = random_string()
+ sub2_view_name = random_string()
+
+ self.assertNotIn(top_view_name, self.jenkins.views())
+ tv = self.jenkins.views().create(top_view_name, Views.NESTED_VIEW)
+ self.assertIn(top_view_name, self.jenkins.views())
+ self.assertIsInstance(tv, View)
+
+ # Empty sub view
+ sv1 = tv.views().create(sub1_view_name)
+ self.assertIn(sub1_view_name, tv.views())
+ self.assertIsInstance(sv1, View)
+
+ # Sub view with job in it
+ tv.views()[sub2_view_name] = job.name
+ self.assertIn(sub2_view_name, tv.views())
+ sv2 = tv.views()[sub2_view_name]
+ self.assertIsInstance(sv2, View)
+ print 'job.name, type(job.name)=', job.name, type(job.name)
+ self.assertTrue(job.name in sv2)
+
+ # Can we use the API convenience methods
+ v = get_view_from_url(sv2.baseurl)
+ self.assertEquals(v, sv2)
if __name__ == '__main__':
logging.basicConfig()