def test_get_job_failure_reasons_by_jobstep_failures(self):
        project = self.create_project(name="test", slug="project-slug")

        build = self.create_build(project, result=Result.failed, target="D1", label="Some sweet diff")
        job = self.create_job(build=build, result=Result.failed)
        jobphase = self.create_jobphase(job)
        jobstep_a = self.create_jobstep(jobphase, status=Status.finished, result=Result.failed, label="Step A")
        jobstep_b = self.create_jobstep(jobphase, status=Status.finished, result=Result.failed, label="Step B")

        db.session.add(
            FailureReason(
                step_id=jobstep_a.id, job_id=job.id, build_id=build.id, project_id=project.id, reason="missing_tests"
            )
        )
        db.session.add(
            FailureReason(
                step_id=jobstep_a.id, job_id=job.id, build_id=build.id, project_id=project.id, reason="aborted"
            )
        )
        db.session.add(
            FailureReason(
                step_id=jobstep_b.id, job_id=job.id, build_id=build.id, project_id=project.id, reason="aborted"
            )
        )
        db.session.commit()

        expected_data = defaultdict(list)
        expected_data[jobstep_a.id] = ["aborted", "missing_tests"]
        expected_data[jobstep_b.id] = ["aborted"]
        self.assertEquals(_get_job_failure_reasons_by_jobstep(job), expected_data)
 def test_get_job_failure_reasons_by_jobstep_passed(self):
     project = self.create_project(name="test", slug="project-slug")
     build = self.create_build(project, result=Result.passed, target="D1", label="Some sweet diff")
     job = self.create_job(build=build, result=Result.passed)
     jobphase = self.create_jobphase(job)
     jobstep = self.create_jobstep(jobphase, status=Status.finished, result=Result.passed)
     self.assertEquals(_get_job_failure_reasons_by_jobstep(job)[jobstep.id], [])
 def test_get_job_failure_reasons_by_jobstep_passed(self):
     project = self.create_project(name='test', slug='project-slug')
     build = self.create_build(project, result=Result.passed, target='D1',
                               label='Some sweet diff')
     job = self.create_job(build=build, result=Result.passed)
     jobphase = self.create_jobphase(job)
     jobstep = self.create_jobstep(jobphase, status=Status.finished, result=Result.passed)
     self.assertEquals(_get_job_failure_reasons_by_jobstep(job)[jobstep.id], [])
    def test_get_job_failure_reasons_by_jobstep_failures(self):
        project = self.create_project(name='test', slug='project-slug')

        build = self.create_build(project,
                                  result=Result.failed,
                                  target='D1',
                                  label='Some sweet diff')
        job = self.create_job(build=build, result=Result.failed)
        jobphase = self.create_jobphase(job)
        jobstep_a = self.create_jobstep(jobphase,
                                        status=Status.finished,
                                        result=Result.failed,
                                        label='Step A')
        jobstep_b = self.create_jobstep(jobphase,
                                        status=Status.finished,
                                        result=Result.failed,
                                        label='Step B')

        db.session.add(
            FailureReason(step_id=jobstep_a.id,
                          job_id=job.id,
                          build_id=build.id,
                          project_id=project.id,
                          reason='missing_tests'))
        db.session.add(
            FailureReason(step_id=jobstep_a.id,
                          job_id=job.id,
                          build_id=build.id,
                          project_id=project.id,
                          reason='aborted'))
        db.session.add(
            FailureReason(step_id=jobstep_b.id,
                          job_id=job.id,
                          build_id=build.id,
                          project_id=project.id,
                          reason='aborted'))
        db.session.commit()

        expected_data = defaultdict(list)
        expected_data[jobstep_a.id] = ['aborted', 'missing_tests']
        expected_data[jobstep_b.id] = ['aborted']
        self.assertEquals(_get_job_failure_reasons_by_jobstep(job),
                          expected_data)
    def test_get_job_failure_reasons_by_jobstep_failures(self):
        project = self.create_project(name='test', slug='project-slug')

        build = self.create_build(project, result=Result.failed, target='D1', label='Some sweet diff')
        job = self.create_job(build=build, result=Result.failed)
        jobphase = self.create_jobphase(job)
        jobstep_a = self.create_jobstep(jobphase, status=Status.finished, result=Result.failed, label='Step A')
        jobstep_b = self.create_jobstep(jobphase, status=Status.finished, result=Result.failed, label='Step B')

        db.session.add(FailureReason(step_id=jobstep_a.id, job_id=job.id, build_id=build.id, project_id=project.id,
                                     reason='missing_tests'))
        db.session.add(FailureReason(step_id=jobstep_a.id, job_id=job.id, build_id=build.id, project_id=project.id,
                                     reason='aborted'))
        db.session.add(FailureReason(step_id=jobstep_b.id, job_id=job.id, build_id=build.id, project_id=project.id,
                                     reason='aborted'))
        db.session.commit()

        expected_data = defaultdict(list)
        expected_data[jobstep_a.id] = ['aborted', 'missing_tests']
        expected_data[jobstep_b.id] = ['aborted']
        self.assertEquals(_get_job_failure_reasons_by_jobstep(job), expected_data)