From 70f4bcadd794676a95d1ce64380be58eea689277 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Wed, 25 Dec 2019 14:57:13 +0800 Subject: [PATCH] Add validation for job_ids on clone jobs form other project --- app/Http/Controllers/Projects/JobsController.php | 11 +++++++---- tests/Feature/ManageJobsTest.php | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Projects/JobsController.php b/app/Http/Controllers/Projects/JobsController.php index 27a8eb9..9387dd4 100755 --- a/app/Http/Controllers/Projects/JobsController.php +++ b/app/Http/Controllers/Projects/JobsController.php @@ -52,15 +52,18 @@ class JobsController extends Controller public function store(CreateRequest $req, $projectId) { $job = $this->repo->createJob($req->except('_token'), $projectId); - flash(trans('job.created'), 'success'); + flash(__('job.created'), 'success'); return redirect()->route('jobs.show', $job->id); } - public function storeFromOtherProject(Request $req, $projectId) + public function storeFromOtherProject(Request $request, $projectId) { - $this->repo->createJobs($req->except('_token'), $projectId); - flash(trans('job.created_from_other_project'), 'success'); + $request->validate(['job_ids' => 'required|array']); + + $this->repo->createJobs($request->except('_token'), $projectId); + + flash(__('job.created_from_other_project'), 'success'); return redirect()->route('projects.jobs.index', $projectId); } diff --git a/tests/Feature/ManageJobsTest.php b/tests/Feature/ManageJobsTest.php index 18dbf73..f6c4799 100644 --- a/tests/Feature/ManageJobsTest.php +++ b/tests/Feature/ManageJobsTest.php @@ -199,6 +199,24 @@ class ManageJobsTest extends TestCase } /** @test */ + public function validate_clone_many_jobs_from_other_projects() + { + $user = $this->adminUserSigningIn(); + $customer = factory(Customer::class)->create(); + $projects = factory(Project::class, 2)->create(['customer_id' => $customer->id]); + $jobs = factory(Job::class, 3)->create(['project_id' => $projects[0]->id]); + $tasks1 = factory(Task::class, 3)->create(['job_id' => $jobs[0]->id]); + $tasks2 = factory(Task::class, 3)->create(['job_id' => $jobs[1]->id]); + + $this->visit(route('projects.jobs.add-from-other-project', [$projects[1]->id, 'project_id' => $projects[0]->id])); + + $this->submitForm(__('job.add'), []); + + $this->seePageIs(route('projects.jobs.add-from-other-project', [$projects[1]->id, 'project_id' => $projects[0]->id])); + $this->see(__('validation.required', ['attribute' => 'job ids'])); + } + + /** @test */ public function admin_can_see_unfinished_jobs_list() { $user = $this->adminUserSigningIn();