From d8ff9692a3012352bfb445ec853625193d2a7975 Mon Sep 17 00:00:00 2001 From: Temepest74 Date: Wed, 15 May 2024 11:16:09 +0300 Subject: [PATCH 1/4] added factory support --- src/Concerns/MustBeApprovedFactory.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/Concerns/MustBeApprovedFactory.php diff --git a/src/Concerns/MustBeApprovedFactory.php b/src/Concerns/MustBeApprovedFactory.php new file mode 100644 index 0000000..cfe4229 --- /dev/null +++ b/src/Concerns/MustBeApprovedFactory.php @@ -0,0 +1,21 @@ +afterMaking(function (Model $model) { + if (!in_array(MustBeApproved::class, class_uses($model))) { + $model->withoutApproval(); + } + }); + } +} From 3742f4f073b6457ef16ebac68ff096d2ad1c00aa Mon Sep 17 00:00:00 2001 From: Temepest74 Date: Wed, 15 May 2024 11:23:44 +0300 Subject: [PATCH 2/4] wrong if condition --- src/Concerns/MustBeApprovedFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Concerns/MustBeApprovedFactory.php b/src/Concerns/MustBeApprovedFactory.php index cfe4229..5f8b2c6 100644 --- a/src/Concerns/MustBeApprovedFactory.php +++ b/src/Concerns/MustBeApprovedFactory.php @@ -13,7 +13,7 @@ trait MustBeApprovedFactory public function withoutApproval(): Factory { return $this->afterMaking(function (Model $model) { - if (!in_array(MustBeApproved::class, class_uses($model))) { + if (in_array(MustBeApproved::class, class_uses($model))) { $model->withoutApproval(); } }); From 5cc32e08d2b376e1d39b1487519b84e58e345c1b Mon Sep 17 00:00:00 2001 From: Temepest74 Date: Wed, 15 May 2024 12:01:26 +0300 Subject: [PATCH 3/4] tests --- tests/Feature/Factories/FakeModelFactory.php | 22 ++++++++++ .../MustBeApprovedFactoryTraitTest.php | 41 +++++++++++++++++++ tests/Models/FakeModel.php | 10 ++++- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 tests/Feature/Factories/FakeModelFactory.php create mode 100644 tests/Feature/MustBeApprovedFactoryTraitTest.php diff --git a/tests/Feature/Factories/FakeModelFactory.php b/tests/Feature/Factories/FakeModelFactory.php new file mode 100644 index 0000000..f39e381 --- /dev/null +++ b/tests/Feature/Factories/FakeModelFactory.php @@ -0,0 +1,22 @@ + 'Bob', + 'meta' => 'green', + ]; + } +} diff --git a/tests/Feature/MustBeApprovedFactoryTraitTest.php b/tests/Feature/MustBeApprovedFactoryTraitTest.php new file mode 100644 index 0000000..3479cc9 --- /dev/null +++ b/tests/Feature/MustBeApprovedFactoryTraitTest.php @@ -0,0 +1,41 @@ +withoutApproval()->create(); + + $this->assertDatabaseHas('fake_models', [ + 'name' => 'Bob', + 'meta' => 'green', + ]); + + $this->assertDatabaseMissing('approvals', [ + 'new_data' => json_encode([ + 'name' => 'Bob', + ]), + ]); +}); + +test(description: 'many models are added via a factory when the "withoutApproval()" method is used ', closure: function () { + FakeModel::factory()->withoutApproval()->count(4)->create(); + + $this->assertCount(4, FakeModel::all()); + + FakeModel::all()->each(function ($model) { + $this->assertEquals('Bob', $model->name); + $this->assertEquals('green', $model->meta); + }); + + $this->assertDatabaseMissing('approvals', [ + 'new_data' => json_encode([ + 'name' => 'Bob', + ]), + ]); +}); diff --git a/tests/Models/FakeModel.php b/tests/Models/FakeModel.php index 036f92b..fa9f459 100644 --- a/tests/Models/FakeModel.php +++ b/tests/Models/FakeModel.php @@ -3,11 +3,14 @@ namespace Cjmellor\Approval\Tests\Models; use Cjmellor\Approval\Concerns\MustBeApproved; +use Cjmellor\Approval\Tests\Feature\Factories\FakeModelFactory; +use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class FakeModel extends Model { - use MustBeApproved; + use MustBeApproved, HasFactory; /** * @var array @@ -18,4 +21,9 @@ class FakeModel extends Model * @var bool */ public $timestamps = false; + + protected static function newFactory(): Factory + { + return FakeModelFactory::new(); + } } From 9de8a99435a951b101cb4074a41fcf7338e9ffe2 Mon Sep 17 00:00:00 2001 From: Chris Mellor Date: Wed, 12 Jun 2024 20:44:17 +0100 Subject: [PATCH 4/4] fix: Run linter --- src/Concerns/MustBeApprovedFactory.php | 3 --- tests/Feature/Factories/FakeModelFactory.php | 2 +- tests/Feature/MustBeApprovedFactoryTraitTest.php | 6 ------ 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/Concerns/MustBeApprovedFactory.php b/src/Concerns/MustBeApprovedFactory.php index 5f8b2c6..162fbb7 100644 --- a/src/Concerns/MustBeApprovedFactory.php +++ b/src/Concerns/MustBeApprovedFactory.php @@ -2,11 +2,8 @@ namespace Cjmellor\Approval\Concerns; -use Cjmellor\Approval\Enums\ApprovalStatus; -use Cjmellor\Approval\Models\Approval; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Relations\MorphMany; trait MustBeApprovedFactory { diff --git a/tests/Feature/Factories/FakeModelFactory.php b/tests/Feature/Factories/FakeModelFactory.php index f39e381..fca3f7c 100644 --- a/tests/Feature/Factories/FakeModelFactory.php +++ b/tests/Feature/Factories/FakeModelFactory.php @@ -12,7 +12,7 @@ class FakeModelFactory extends Factory protected $model = FakeModel::class; - public function definition():array + public function definition(): array { return [ 'name' => 'Bob', diff --git a/tests/Feature/MustBeApprovedFactoryTraitTest.php b/tests/Feature/MustBeApprovedFactoryTraitTest.php index 3479cc9..6635776 100644 --- a/tests/Feature/MustBeApprovedFactoryTraitTest.php +++ b/tests/Feature/MustBeApprovedFactoryTraitTest.php @@ -1,12 +1,6 @@ withoutApproval()->create();