Skip to content

Commit

Permalink
Keep model attributes for deletedBulk method. (#477)
Browse files Browse the repository at this point in the history
* fix after bulk method calls

* fix number of calls

* revert returns

* keep model attributes
  • Loading branch information
daniel-banciulea authored Jul 15, 2022
1 parent 30ad502 commit 4b767f6
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
6 changes: 5 additions & 1 deletion src/Http/Controllers/RepositoryDestroyBulkController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@

class RepositoryDestroyBulkController
{
private array $repositories = [];

public function __invoke(RepositoryDestroyBulkRequest $request)
{
$collection = DB::transaction(function () use ($request) {
return $request->collect()
->each(function (int|string $key, int $row) use ($request) {
$model = $request->modelQuery($key)->lockForUpdate()->firstOrFail();

$this->repositories[] = $model->attributesToArray();

/**
* @var Repository $repository
*/
Expand All @@ -30,7 +34,7 @@ public function __invoke(RepositoryDestroyBulkRequest $request)
});
});

$request->repository()::deletedBulk($collection, $request);
$request->repository()::deletedBulk(collect($this->repositories), $request);

return ok();
}
Expand Down
10 changes: 8 additions & 2 deletions tests/Unit/RepositoryAfterBulkTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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' => '[email protected]',
'email' => $user->email,
'name' => $user->name,
]);
}
}
Expand Down Expand Up @@ -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' => '[email protected]',
'email' => $first['email'],
'name' => $first['name'],
]);
}
}

0 comments on commit 4b767f6

Please sign in to comment.