From 4b767f6c86a93fb487c426c1d504423ed6de0efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C4=83nciulea?= Date: Fri, 15 Jul 2022 09:57:03 +0300 Subject: [PATCH] Keep model attributes for deletedBulk method. (#477) * fix after bulk method calls * fix number of calls * revert returns * keep model attributes --- .../Controllers/RepositoryDestroyBulkController.php | 6 +++++- tests/Unit/RepositoryAfterBulkTest.php | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Http/Controllers/RepositoryDestroyBulkController.php b/src/Http/Controllers/RepositoryDestroyBulkController.php index ef10157a..f626650b 100644 --- a/src/Http/Controllers/RepositoryDestroyBulkController.php +++ b/src/Http/Controllers/RepositoryDestroyBulkController.php @@ -8,6 +8,8 @@ class RepositoryDestroyBulkController { + private array $repositories = []; + public function __invoke(RepositoryDestroyBulkRequest $request) { $collection = DB::transaction(function () use ($request) { @@ -15,6 +17,8 @@ public function __invoke(RepositoryDestroyBulkRequest $request) ->each(function (int|string $key, int $row) use ($request) { $model = $request->modelQuery($key)->lockForUpdate()->firstOrFail(); + $this->repositories[] = $model->attributesToArray(); + /** * @var Repository $repository */ @@ -30,7 +34,7 @@ public function __invoke(RepositoryDestroyBulkRequest $request) }); }); - $request->repository()::deletedBulk($collection, $request); + $request->repository()::deletedBulk(collect($this->repositories), $request); return ok(); } diff --git a/tests/Unit/RepositoryAfterBulkTest.php b/tests/Unit/RepositoryAfterBulkTest.php index f899a9dd..7487718f 100644 --- a/tests/Unit/RepositoryAfterBulkTest.php +++ b/tests/Unit/RepositoryAfterBulkTest.php @@ -85,8 +85,11 @@ public function test_it_calls_the_overriden_deleted_bulk_method(): void $user->id, ])->assertSuccessful(); + $this->assertDatabaseMissing(User::class, ['id' => $user->id]); + $this->assertDatabaseHas(User::class, [ - 'email' => 'new@example.com', + 'email' => $user->email, + 'name' => $user->name, ]); } } @@ -122,8 +125,11 @@ public static function savedBulk(Collection $repositories, $request) public static function deletedBulk(Collection $repositories, $request) { + $first = $repositories->first(); + User::factory()->create([ - 'email' => 'new@example.com', + 'email' => $first['email'], + 'name' => $first['name'], ]); } }