Ejemplo n.º 1
0
    def test___set_jobs___Four_jobs___List_with_correct_names_and_statuses_passed_to_view(
            self):

        jobs = [
            JobModel(Job('eric', pyjenkins.job.JobStatus.DISABLED), False),
            JobModel(Job('john', pyjenkins.job.JobStatus.FAILING), False),
            JobModel(Job('terry', pyjenkins.job.JobStatus.OK), False),
            JobModel(Job('graham', pyjenkins.job.JobStatus.UNKNOWN), False)
        ]

        self.qtgui.QListWidgetItem('disabled icon',
                                   'eric').AndReturn('item for eric')
        self.qtgui.QListWidgetItem('failing icon',
                                   'john').AndReturn('item for john')
        self.qtgui.QListWidgetItem('ok icon',
                                   'terry').AndReturn('item for terry')
        self.qtgui.QListWidgetItem('unknown icon',
                                   'graham').AndReturn('item for graham')
        self.view.right_click_event().InAnyOrder().AndReturn(Event())
        self.view.set_list([
            'item for eric', 'item for john', 'item for terry',
            'item for graham'
        ])
        self.mocks.ReplayAll()

        adapter = gui.jobs.ListViewAdapter(self.view, self.media,
                                           self.menu_factory, self.qtgui)
        adapter.set_jobs(jobs)

        mox.Verify(self.view)
Ejemplo n.º 2
0
    def test_constructor___View_fires_right_click_event___Show_menu_at_correct_coordinates(
            self):

        right_click_event = Event()
        menu = self.mocks.CreateMock(MockQMenu)
        menu.popup('screen coordinates')

        job_models = [
            JobModel(Job('eric', pyjenkins.job.JobStatus.DISABLED), False),
            JobModel(Job('john', pyjenkins.job.JobStatus.FAILING), False),
            JobModel(Job('terry', pyjenkins.job.JobStatus.OK), False)
        ]

        self._stub_out_set_jobs()
        self.menu_factory.create(job_models[1], mox.IgnoreArg(),
                                 mox.IgnoreArg(), mox.IgnoreArg(),
                                 mox.IgnoreArg()).AndReturn(menu)
        self.view.right_click_event().InAnyOrder().AndReturn(right_click_event)
        self.mocks.ReplayAll()

        adapter = gui.jobs.ListViewAdapter(self.view, self.media,
                                           self.menu_factory,
                                           self.qtgui)  # @UnusedVariable
        adapter.set_jobs(job_models)
        right_click_event.fire('john', 'screen coordinates')

        mox.Verify(menu)
Ejemplo n.º 3
0
 def __init__(self):
     self._jobs_rota = [
         [Job('spam', JobStatus.OK),
          Job('eggs', JobStatus.OK)],
         [Job('spam', JobStatus.FAILING),
          Job('eggs', JobStatus.DISABLED)],
     ]
     self._next_jobs = 0
Ejemplo n.º 4
0
    def test_message_OneFailingJob_ReturnCorrectMessage(self):

        jobs = [Job('eric', JobStatus.OK), Job('terry', JobStatus.FAILING)]

        composer = DefaultMessageComposer()
        result = composer.message(jobs)

        self.assertEqual('FAILING:\nterry', result)
Ejemplo n.º 5
0
    def test_equalityop_JobsDiffer_ReturnFalse(self):

        jobOne = Job('something', JobStatus.FAILING)
        jobTwo = Job('blah', JobStatus.DISABLED)
        modelOne = JobModel(jobOne, False)
        modelTwo = JobModel(jobTwo, False)

        self.assertFalse(modelOne == modelTwo)
Ejemplo n.º 6
0
    def test_message_AllJobsOk_ReturnCorrectMessage(self):

        jobs = [Job('eric', JobStatus.OK), Job('terry', JobStatus.OK)]

        composer = DefaultMessageComposer()
        result = composer.message(jobs)

        self.assertEqual('All active jobs pass', result)
Ejemplo n.º 7
0
    def test___filter_jobs___Nothing_ignored___Return_unmodified_list(self):

        job_models = [JobModel(Job('eric', JobStatus.FAILING), False),
                      JobModel(Job('terry', JobStatus.FAILING), False)]

        jobs_filter = IgnoreJobsFilter()
        result = jobs_filter.filter_jobs(job_models)

        self.assertEqual(job_models, result)
Ejemplo n.º 8
0
    def test___filter_jobs___One_ignored___Return_non_ignored_jobs(self):

        non_ignored = JobModel(Job('eric', JobStatus.FAILING), False)
        ignored = JobModel(Job('terry', JobStatus.FAILING), True)

        jobs_filter = IgnoreJobsFilter()
        result = jobs_filter.filter_jobs([non_ignored, ignored])

        self.assertEqual([non_ignored], result)
Ejemplo n.º 9
0
    def test_status_NoFailingJobs_ReturnOk(self):

        jobs = [
            Job('eric', JobStatus.UNKNOWN),
            Job('terry', JobStatus.OK),
            Job('graham', JobStatus.DISABLED)
        ]

        reader = StatusReader()
        result = reader.status(jobs)

        self.assertEqual(JobStatus.OK, result)
Ejemplo n.º 10
0
    def test__update_jobs__First_call__Fire_jobs_updated_event_with_no_ignores(self):

        jobOne = Job('job1', JobStatus.OK)
        jobTwo = Job('job2', JobStatus.FAILING)
        self.jenkins.list_jobs().AndReturn([jobOne, jobTwo])
        self.event.fire([JobModel(jobOne, False), JobModel(jobTwo, False)])
        self.mocks.ReplayAll()

        model = Model(self.jenkins, self.logger, self.event)
        model.update_jobs()

        mox.Verify(self.event)
Ejemplo n.º 11
0
    def test_update_jobs___Ignore_job2_before_update___JobModel_ignored_on_event_fired(self):

        jobOne = Job('job1', JobStatus.OK)
        jobTwo = Job('job2', JobStatus.FAILING)
        self.jenkins.list_jobs().AndReturn([jobOne, jobTwo])
        self.event.fire([JobModel(jobOne, False), JobModel(jobTwo, True)])
        self.mocks.ReplayAll()

        model = Model(self.jenkins, self.logger, self.event)
        model.ignore_job('job2')
        model.update_jobs()

        mox.Verify(self.event)
Ejemplo n.º 12
0
    def test_status_OneFailingJob_ReturnFailing(self):

        jobs = [
            Job('eric', JobStatus.UNKNOWN),
            Job('john', JobStatus.FAILING),
            Job('terry', JobStatus.OK),
            Job('graham', JobStatus.DISABLED)
        ]

        reader = StatusReader()
        result = reader.status(jobs)

        self.assertEqual(JobStatus.FAILING, result)
Ejemplo n.º 13
0
    def test_equalityop_TwoEquivalentObjects_ReturnTrue(self):

        job = Job('something', JobStatus.FAILING)
        modelOne = JobModel(job, False)
        modelTwo = JobModel(job, False)

        self.assertTrue(modelOne == modelTwo)
Ejemplo n.º 14
0
    def test_equalityop_IgnoredDiffers_ReturnFalse(self):

        job = Job('something', JobStatus.FAILING)
        modelOne = JobModel(job, False)
        modelTwo = JobModel(job, True)

        self.assertFalse(modelOne == modelTwo)
Ejemplo n.º 15
0
    def test__list_jobs__JsonResultContainsSomeJobs_ReturnListOfJobs(self):

        json_parsed = {'jobs': [{'name':'graham', 'color':'red'},
                                {'name':'john', 'color':'blue'},
                                {'name':'eric', 'color':'grey'},
                                {'name':'terry', 'color':'disabled'},
                                ]}
        self.http.request('api/json', {'tree': 'jobs[name,color]'}).AndReturn(('json response', HttpStatus.OK))
        self.json.parse('json response').AndReturn(json_parsed)
        self.mocks.ReplayAll()

        jenkins = Jenkins(self.http, self.json)
        result = jenkins.list_jobs()
        expectedResult = [Job('graham', JobStatus.FAILING),
                          Job('john', JobStatus.OK),
                          Job('eric', JobStatus.UNKNOWN),
                          Job('terry', JobStatus.DISABLED)]

        self.assertEqual(expectedResult, result)
Ejemplo n.º 16
0
    def test___set_jobs___Ignored_job___Ignored_job_gets_ignored_icon(self):

        jobs = [
            JobModel(Job('john', pyjenkins.job.JobStatus.FAILING), False),
            JobModel(Job('terry', pyjenkins.job.JobStatus.OK), True)
        ]

        self.qtgui.QListWidgetItem('failing icon',
                                   'john').AndReturn('item for john')
        self.qtgui.QListWidgetItem('ignored icon',
                                   'terry').AndReturn('item for terry')
        self.view.right_click_event().InAnyOrder().AndReturn(Event())
        self.view.set_list(['item for john', 'item for terry'])
        self.mocks.ReplayAll()

        adapter = gui.jobs.ListViewAdapter(self.view, self.media,
                                           self.menu_factory, self.qtgui)
        adapter.set_jobs(jobs)

        mox.Verify(self.view)
Ejemplo n.º 17
0
    def setUp(self):

        self.mocks = mox.Mox()
        self.jobs_filter = self.mocks.CreateMock(IFilter)
        self.messageComposer = self.mocks.CreateMock(IMessageComposer)
        self.statusReader = self.mocks.CreateMock(IStatusReader)
        self.statusEvent = self.mocks.CreateMock(IEvent)
        self.jobsModel = self.mocks.CreateMock(JobsModel)
        self.jobsEvent = Event()
        self.jobsModel.jobs_updated_event().AndReturn(self.jobsEvent)
        self.jobs = [Job('who', 'cares?')]
        self.job_models = [JobModel(self.jobs[0], False)]
Ejemplo n.º 18
0
    def list_jobs(self):
        """
        @return: list of Jobs
        @rtype: [pyjenkins.job.Job]
        """
        result = None
        jobs = self._get_json_jobs({'tree': 'jobs[name,color]'})

        if jobs is not None:
            result = [
                Job(job['name'], self.statusMap[job['color']]) for job in jobs
            ]

        return result
Ejemplo n.º 19
0
    def test_create_JobIsDisabled_AddEnableAction(self):

        job_model = JobModel(Job('name', JobStatus.DISABLED), True)
        self.qtgui.QAction(mox.IgnoreArg(),
                           mox.IgnoreArg(),
                           triggered=mox.IgnoreArg()).InAnyOrder().AndReturn(
                               'ignore/unignore action')
        self.qtgui.QAction('Enable', self.parent,
                           triggered='enable callback').InAnyOrder().AndReturn(
                               'enable action')
        self.menu.addAction(mox.IgnoreArg()).InAnyOrder()
        self.menu.addAction('enable action').InAnyOrder()
        self.mocks.ReplayAll()

        factory = gui.jobs.ContextMenuFactory(self.parent, self.qtgui)
        factory.create(job_model, 'ignore callback', 'unignore callback',
                       'enable callback', 'disable callback')

        mox.Verify(self.menu)
Ejemplo n.º 20
0
    def test_create___Job_status_is_unknown___No_enable_or_disable_added(self):

        job_model = JobModel(Job('name', JobStatus.UNKNOWN), False)
        self.qtgui.QAction(mox.IgnoreArg(),
                           mox.IgnoreArg(),
                           triggered='ignore callback').InAnyOrder().AndReturn(
                               'ignore/unignore action')
        self.qtgui.QAction(
            mox.IgnoreArg(), mox.IgnoreArg(),
            triggered='unignore callback').InAnyOrder().AndReturn(
                'ignore/unignore action')
        self.menu.addAction('ignore/unignore action')
        self.mocks.ReplayAll()

        factory = gui.jobs.ContextMenuFactory(self.parent, self.qtgui)
        factory.create(job_model, 'ignore callback', 'unignore callback',
                       'enable callback', 'disable callback')

        mox.Verify(self.menu)
Ejemplo n.º 21
0
    def test_create_AnyJob_ReturnMenu(self):

        job_model = JobModel(Job('name', 'status'), False)
        self.qtgui.QAction(mox.IgnoreArg(),
                           mox.IgnoreArg(),
                           triggered=mox.IgnoreArg()).InAnyOrder().AndReturn(
                               'ignore/unignore action')
        self.qtgui.QAction(mox.IgnoreArg(),
                           mox.IgnoreArg(),
                           triggered=mox.IgnoreArg()).InAnyOrder().AndReturn(
                               'enable/disable action')
        self.menu.addAction(mox.IgnoreArg()).InAnyOrder()
        self.menu.addAction(mox.IgnoreArg()).InAnyOrder()
        self.mocks.ReplayAll()

        factory = gui.jobs.ContextMenuFactory(self.parent, self.qtgui)
        result = factory.create(job_model, 'ignore callback',
                                'unignore callback', 'enable callback',
                                'disable callback')

        self.assertTrue(self.menu is result)
Ejemplo n.º 22
0
    def test_updateStatus_JobsFilterReturnsModifiedList_ModifiedListPassedTo(
            self):

        filtered_jobs = [Job('completely', 'different')]
        filtered_models = [JobModel(filtered_jobs[0], True)]
        self.jobs_filter.filter_jobs(
            self.job_models).AndReturn(filtered_models)
        self.messageComposer.message(filtered_jobs).AndReturn('message')
        self.statusReader.status(filtered_jobs).AndReturn(JobStatus.OK)
        self.statusEvent.fire(JobStatus.OK, 'message')
        self.mocks.ReplayAll()

        model = Model(
            self.jobsModel,  # @UnusedVariable
            self.jobs_filter,
            self.messageComposer,
            self.statusReader,
            self.statusEvent)

        self.jobsEvent.fire(self.job_models)

        mox.Verify(self.statusEvent)
Ejemplo n.º 23
0
    def test_constructor___User_clicks_disable_menu_item___Fire_job_disabled_event(
            self):

        job_models = [
            JobModel(Job('eric', pyjenkins.job.JobStatus.FAILING), False)
        ]
        right_click_event = Event()
        menu = self.mocks.CreateMock(MockQMenu)
        menu_factory = MockMenuFactory(menu)
        mock_event_handler = MockEventHandler()

        self.view.right_click_event().InAnyOrder().AndReturn(right_click_event)
        self._stub_out_set_jobs()
        menu.popup(mox.IgnoreArg())
        self.mocks.ReplayAll()

        adapter = gui.jobs.ListViewAdapter(self.view, self.media, menu_factory,
                                           self.qtgui)  # @UnusedVariable
        adapter.job_disabled_event().register(mock_event_handler)
        adapter.set_jobs(job_models)
        right_click_event.fire('eric', 'screen coordinates')
        menu_factory.disable_callback()

        self.assertEqual('eric', mock_event_handler.argument)
Ejemplo n.º 24
0
    def test_constructor_NameAttributeMatchesThatPassedIn(self):

        job = Job('a name', 'whatever')
        self.assertEqual('a name', job.name)
Ejemplo n.º 25
0
    def test_repr_ReturnsSensibleResult(self):

        job = Job('spam', JobStatus.OK)
        self.assertEquals("Job(name='spam',status='OK')", job.__repr__())
Ejemplo n.º 26
0
    def test_equalityop_StatusDiffer_ReturnFalse(self):

        jobOne = Job('eggs', JobStatus.FAILING)
        jobTwo = Job('eggs', JobStatus.UNKNOWN)

        self.assertFalse(jobOne == jobTwo)
Ejemplo n.º 27
0
    def test_equalityop_NamesDiffer_ReturnFalse(self):

        jobOne = Job('spam', JobStatus.FAILING)
        jobTwo = Job('eggs', JobStatus.FAILING)

        self.assertFalse(jobOne == jobTwo)
Ejemplo n.º 28
0
    def test_equalityop_TwoEquivalentObjects_ReturnTrue(self):

        jobOne = Job('spam', JobStatus.FAILING)
        jobTwo = Job('spam', JobStatus.FAILING)

        self.assertTrue(jobOne == jobTwo)
Ejemplo n.º 29
0
    def test_constructor_StatusAttributeMatchesThatPassedIn(self):

        job = Job('spam', JobStatus.FAILING)
        self.assertEqual(JobStatus.FAILING, job.status)
Ejemplo n.º 30
0
    def test_repr_ReturnsSensibleResult(self):

        job = Job('spam', JobStatus.OK)
        self.assertEquals("Job(name='spam',status='OK')", job.__repr__())