def test_job_creation_with_already_built_triggers_scheduling(self): # Create a repo for the project repo = RepoFactory() with patch( 'scheduler.tasks.jobs.jobs_build.apply_async') as mock_build: job = JobFactory(project=repo.project) assert mock_build.call_count == 1 assert job.project.repo is not None assert JobStatus.objects.filter(job=job).count() == 1 assert list( JobStatus.objects.filter(job=job).values_list( 'status', flat=True)) == [JobLifeCycle.CREATED] with patch('scheduler.dockerizer_scheduler.create_build_job' ) as mock_start: build = BuildJobFactory() BuildJobStatus.objects.create(status=JobLifeCycle.SUCCEEDED, job=build) mock_start.return_value = build, True, True jobs_build(job_id=job.id) assert mock_start.call_count == 1 assert JobStatus.objects.filter(job=job).count() == 2 assert list( JobStatus.objects.filter(job=job).values_list( 'status', flat=True)) == [JobLifeCycle.CREATED, JobLifeCycle.SCHEDULED] job.refresh_from_db() assert job.last_status == JobLifeCycle.SCHEDULED
def test_job_creation_triggers_build(self): # Create a repo for the project repo = RepoFactory() with patch( 'scheduler.tasks.jobs.jobs_build.apply_async') as mock_build: job = JobFactory(project=repo.project) assert mock_build.call_count == 1 assert job.project.repo is not None assert JobStatus.objects.filter(job=job).count() == 1 assert list( JobStatus.objects.filter(job=job).values_list( 'status', flat=True)) == [JobLifeCycle.CREATED] with patch('scheduler.dockerizer_scheduler.start_dockerizer' ) as mock_start: mock_start.return_value = True jobs_build(job_id=job.id) assert mock_start.call_count == 1 assert JobStatus.objects.filter(job=job).count() == 2 assert list( JobStatus.objects.filter(job=job).values_list( 'status', flat=True)) == [JobLifeCycle.CREATED, JobLifeCycle.BUILDING] job.refresh_from_db() assert job.last_status == JobLifeCycle.BUILDING