From 1c2657d7f20548eb3c3144d2cbd3ea586e555a20 Mon Sep 17 00:00:00 2001 From: chester Date: Fri, 13 Dec 2024 10:51:09 +0800 Subject: [PATCH] Also added the ability to pass in a callback function to the `assertTableBulkActionDataSet` --- packages/tables/.stubs.php | 2 +- packages/tables/src/Testing/TestsBulkActions.php | 12 +++++++++--- tests/src/Tables/Actions/BulkActionTest.php | 5 ++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/tables/.stubs.php b/packages/tables/.stubs.php index 60716cbc5e..6000add502 100644 --- a/packages/tables/.stubs.php +++ b/packages/tables/.stubs.php @@ -53,7 +53,7 @@ namespace Livewire\Features\SupportTesting { public function setTableBulkActionData(array $data): static {} - public function assertTableBulkActionDataSet(array $data): static {} + public function assertTableBulkActionDataSet(array | Closure $state): static {} public function callTableBulkAction(string $name, array | Collection $records, array $data = [], array $arguments = []): static {} diff --git a/packages/tables/src/Testing/TestsBulkActions.php b/packages/tables/src/Testing/TestsBulkActions.php index 00aadca77c..c7f58b7939 100644 --- a/packages/tables/src/Testing/TestsBulkActions.php +++ b/packages/tables/src/Testing/TestsBulkActions.php @@ -70,9 +70,15 @@ class TestsBulkActions public function assertTableBulkActionDataSet(): Closure { - return function (array $data): static { - foreach (Arr::dot($data, prepend: 'mountedTableBulkActionData.') as $key => $value) { - $this->assertSet($key, $value); + return function (array | Closure $state): static { + if ($state instanceof Closure) { + $state = $state($this->get('mountedTableBulkActionData')); + } + + if (is_array($state)) { + foreach (Arr::dot($state, prepend: 'mountedTableBulkActionData.') as $key => $value) { + $this->assertSet($key, $value); + } } return $this; diff --git a/tests/src/Tables/Actions/BulkActionTest.php b/tests/src/Tables/Actions/BulkActionTest.php index 155407ea8a..152bf1b18e 100644 --- a/tests/src/Tables/Actions/BulkActionTest.php +++ b/tests/src/Tables/Actions/BulkActionTest.php @@ -53,7 +53,10 @@ it('can set default bulk action data when mounted', function () { ->mountTableBulkAction('data', records: $posts) ->assertTableBulkActionDataSet([ 'foo' => 'bar', - ]); + ]) + ->assertTableBulkActionDataSet(function (array $data): bool { + return $data['foo'] === 'bar'; + }); }); it('can call a bulk action with arguments', function () {