class TestTreeherderApiGetAllJobsByStatus(unittest.TestCase):
    """Test TreeherderApi fetch all jobs(buildernames for now) by job's status."""
    def setUp(self):
        self.query_api = TreeherderApi()
        self.repo_name = 'repo_mock'
        self.revision = 'revision_mock'

    @patch('mozci.query_jobs.TreeherderApi.get_all_jobs',
           return_value=json.loads(MOCK_JOBS % {
               'result': "success",
               'state': "completed"
           }))
    @patch('mozci.query_jobs.TreeherderApi.get_job_status',
           return_value=SUCCESS)
    def test_successful_job(self, get_all_jobs, get_job_status):
        """Test TreeherderApi find_all_jobs_by_status with a successful job."""
        self.assertEqual(
            self.query_api.find_all_jobs_by_status(self.repo_name,
                                                   self.revision, SUCCESS),
            [
                "Ubuntu VM 12.04 x64 mozilla-inbound opt test mochitest-1",
                "[TC] - Linux64 web-platform-tests-e10s-6"
            ])

    @patch('mozci.query_jobs.TreeherderApi.get_all_jobs',
           return_value=json.loads(MOCK_JOBS % {
               'result': "testfailed",
               'state': "completed"
           }))
    @patch('mozci.query_jobs.TreeherderApi.get_job_status',
           return_value=FAILURE)
    def test_failed_job(self, get_all_jobs, get_job_status):
        """Test TreeherderApi find_all_jobs_by_status with a failed job."""
        self.assertEqual(
            self.query_api.find_all_jobs_by_status(self.repo_name,
                                                   self.revision, FAILURE),
            [
                "Ubuntu VM 12.04 x64 mozilla-inbound opt test mochitest-1",
                "[TC] - Linux64 web-platform-tests-e10s-6"
            ])

    @patch('mozci.query_jobs.TreeherderApi.get_all_jobs',
           return_value=json.loads(MOCK_JOBS % {
               'result': "unknown",
               'state': "pending"
           }))
    @patch('mozci.query_jobs.TreeherderApi.get_job_status',
           return_value=PENDING)
    def test_pending_job(self, get_all_jobs, get_job_status):
        """Test TreeherderApi find_all_jobs_by_status with a pending job."""
        self.assertEqual(
            self.query_api.find_all_jobs_by_status(self.repo_name,
                                                   self.revision, PENDING),
            [
                "Ubuntu VM 12.04 x64 mozilla-inbound opt test mochitest-1",
                "[TC] - Linux64 web-platform-tests-e10s-6"
            ])
class TestTreeherderApiGetAllJobsByStatus(unittest.TestCase):
    """Test TreeherderApi fetch all jobs(buildernames for now) by job's status."""

    def setUp(self):
        self.query_api = TreeherderApi()
        self.repo_name = 'repo_mock'
        self.revision = 'revision_mock'

    @patch('mozci.query_jobs.TreeherderApi.get_all_jobs',
           return_value=json.loads(MOCK_JOBS % {'result': "success", 'state': "completed"}))
    @patch('mozci.query_jobs.TreeherderApi.get_job_status',
           return_value=SUCCESS)
    def test_successful_job(self, get_all_jobs, get_job_status):
        """Test TreeherderApi find_all_jobs_by_status with a successful job."""
        self.assertEqual(self.query_api.find_all_jobs_by_status(
            self.repo_name, self.revision, SUCCESS),
            ["Ubuntu VM 12.04 x64 mozilla-inbound opt test mochitest-1",
             "[TC] - Linux64 web-platform-tests-e10s-6"])

    @patch('mozci.query_jobs.TreeherderApi.get_all_jobs',
           return_value=json.loads(MOCK_JOBS % {'result': "testfailed", 'state': "completed"}))
    @patch('mozci.query_jobs.TreeherderApi.get_job_status',
           return_value=FAILURE)
    def test_failed_job(self, get_all_jobs, get_job_status):
        """Test TreeherderApi find_all_jobs_by_status with a failed job."""
        self.assertEqual(self.query_api.find_all_jobs_by_status(
            self.repo_name, self.revision, FAILURE),
            ["Ubuntu VM 12.04 x64 mozilla-inbound opt test mochitest-1",
             "[TC] - Linux64 web-platform-tests-e10s-6"])

    @patch('mozci.query_jobs.TreeherderApi.get_all_jobs',
           return_value=json.loads(MOCK_JOBS % {'result': "unknown", 'state': "pending"}))
    @patch('mozci.query_jobs.TreeherderApi.get_job_status',
           return_value=PENDING)
    def test_pending_job(self, get_all_jobs, get_job_status):
        """Test TreeherderApi find_all_jobs_by_status with a pending job."""
        self.assertEqual(self.query_api.find_all_jobs_by_status(
            self.repo_name, self.revision, PENDING),
            ["Ubuntu VM 12.04 x64 mozilla-inbound opt test mochitest-1",
             "[TC] - Linux64 web-platform-tests-e10s-6"])