Skip to content

Commit f5ad6a6

Browse files
authored
Remove legacy factories (#91)
Replace legacy factories with the new ones
1 parent 5478657 commit f5ad6a6

18 files changed

+151
-113
lines changed

composer.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
"illuminate/support": "^9.0|^10.0"
4242
},
4343
"require-dev": {
44-
"laravel/legacy-factories": "^1.3",
4544
"mockery/mockery": "^1.0",
4645
"orchestra/testbench": "^7.0|^8.0",
4746
"phpunit/phpunit": "^9.6"
@@ -54,7 +53,8 @@
5453
},
5554
"autoload-dev": {
5655
"psr-4": {
57-
"Cog\\Tests\\Laravel\\Ban\\": "tests/"
56+
"Cog\\Tests\\Laravel\\Ban\\": "tests/",
57+
"Cog\\Tests\\Laravel\\Ban\\Database\\Factories\\": "tests/database/factories"
5858
}
5959
},
6060
"scripts": {

phpunit.xml.dist

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
<testsuites>
1414
<testsuite name="Package Test Suite">
1515
<directory suffix=".php">tests/</directory>
16-
<exclude>tests/database/factories/</exclude>
1716
</testsuite>
1817
</testsuites>
1918
<php>

src/Models/Ban.php

+2
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
use Cog\Contracts\Ban\Ban as BanContract;
1717
use Cog\Contracts\Ban\Bannable as BannableContract;
1818
use Illuminate\Database\Eloquent\Builder;
19+
use Illuminate\Database\Eloquent\Factories\HasFactory;
1920
use Illuminate\Database\Eloquent\Model;
2021
use Illuminate\Database\Eloquent\Relations\MorphTo;
2122
use Illuminate\Database\Eloquent\SoftDeletes;
2223
use Illuminate\Support\Carbon;
2324

2425
class Ban extends Model implements BanContract
2526
{
27+
use HasFactory;
2628
use SoftDeletes;
2729

2830
/**

tests/AbstractTestCase.php

+4-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
use Cog\Laravel\Ban\Providers\BanServiceProvider;
1717
use Cog\Tests\Laravel\Ban\Stubs\Models\User;
18+
use Illuminate\Database\Eloquent\Factories\Factory;
1819
use Illuminate\Support\Facades\File;
1920
use Orchestra\Testbench\TestCase as Orchestra;
2021

@@ -110,8 +111,9 @@ protected function migratePackageTables(): void
110111
*/
111112
private function registerPackageFactories(): void
112113
{
113-
$pathToFactories = realpath(__DIR__ . '/database/factories');
114-
$this->withFactories($pathToFactories);
114+
Factory::guessFactoryNamesUsing(function (string $modelName) {
115+
return 'Cog\\Tests\\Laravel\\Ban\\Database\\Factories\\' . class_basename($modelName) . 'Factory';
116+
});
115117
}
116118

117119
/**

tests/Stubs/Models/User.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515

1616
use Cog\Contracts\Ban\Bannable as BannableInterface;
1717
use Cog\Laravel\Ban\Traits\Bannable;
18+
use Illuminate\Database\Eloquent\Factories\HasFactory;
1819
use Illuminate\Foundation\Auth\User as Authenticatable;
1920

20-
final class User extends Authenticatable implements BannableInterface
21+
final class User extends Authenticatable implements
22+
BannableInterface
2123
{
2224
use Bannable;
25+
use HasFactory;
2326

2427
/**
2528
* The table associated with the model.

tests/Stubs/Models/UserWithBannedAtScopeApplied.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,13 @@
1515

1616
use Cog\Contracts\Ban\Bannable as BannableInterface;
1717
use Cog\Laravel\Ban\Traits\Bannable;
18+
use Illuminate\Database\Eloquent\Factories\HasFactory;
1819
use Illuminate\Foundation\Auth\User as Authenticatable;
1920

20-
final class UserWithBannedAtScopeApplied extends Authenticatable implements BannableInterface
21+
final class UserWithBannedAtScopeApplied extends Authenticatable implements
22+
BannableInterface
2123
{
24+
use HasFactory;
2225
use Bannable;
2326

2427
/**

tests/Unit/Events/ModelWasBannedTest.php

+5-9
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ final class ModelWasBannedTest extends AbstractTestCase
2323
/** @test */
2424
public function it_can_fire_event_on_helper_call(): void
2525
{
26-
Event::fake([
27-
ModelWasBanned::class,
28-
]);
29-
$entity = factory(User::class)->create();
26+
Event::fake(ModelWasBanned::class);
27+
$entity = User::factory()->create();
3028

3129
$entity->ban();
3230

@@ -36,12 +34,10 @@ public function it_can_fire_event_on_helper_call(): void
3634
/** @test */
3735
public function it_can_fire_event_on_relation_create(): void
3836
{
39-
Event::fake([
40-
ModelWasBanned::class,
41-
]);
42-
$entity = factory(User::class)->create();
37+
Event::fake(ModelWasBanned::class);
38+
$entity = User::factory()->create();
4339

44-
$entity->bans()->create([]);
40+
$entity->bans()->create();
4541

4642
Event::assertDispatched(ModelWasBanned::class);
4743
}

tests/Unit/Events/ModelWasUnbannedTest.php

+4-8
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@ final class ModelWasUnbannedTest extends AbstractTestCase
2323
/** @test */
2424
public function it_can_fire_event_on_helper_call(): void
2525
{
26-
Event::fake([
27-
ModelWasUnbanned::class,
28-
]);
29-
$ban = factory(Ban::class)->create();
26+
Event::fake(ModelWasUnbanned::class);
27+
$ban = Ban::factory()->create();
3028

3129
$ban->bannable->unban();
3230

@@ -36,10 +34,8 @@ public function it_can_fire_event_on_helper_call(): void
3634
/** @test */
3735
public function it_can_fire_event_on_relation_delete(): void
3836
{
39-
Event::fake([
40-
ModelWasUnbanned::class,
41-
]);
42-
$ban = factory(Ban::class)->create();
37+
Event::fake(ModelWasUnbanned::class);
38+
$ban = Ban::factory()->create();
4339

4440
$ban->delete();
4541

tests/Unit/Models/BanTest.php

+14-14
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public function it_casts_expired_at(): void
7575
/** @test */
7676
public function it_casts_deleted_at(): void
7777
{
78-
$ban = factory(Ban::class)->create([
78+
$ban = Ban::factory()->create([
7979
'deleted_at' => '2018-03-28 00:00:00',
8080
]);
8181

@@ -95,9 +95,9 @@ public function it_not_modify_null_expired_at(): void
9595
/** @test */
9696
public function it_can_has_ban_creator(): void
9797
{
98-
$bannedBy = factory(User::class)->create();
98+
$bannedBy = User::factory()->create();
9999

100-
$ban = factory(Ban::class)->create([
100+
$ban = Ban::factory()->create([
101101
'created_by_type' => $bannedBy->getMorphClass(),
102102
'created_by_id' => $bannedBy->getKey(),
103103
]);
@@ -108,8 +108,8 @@ public function it_can_has_ban_creator(): void
108108
/** @test */
109109
public function it_can_set_custom_ban_creator(): void
110110
{
111-
$bannable = factory(User::class)->create();
112-
$bannedBy = factory(User::class)->create();
111+
$bannable = User::factory()->create();
112+
$bannedBy = User::factory()->create();
113113

114114
$ban = $bannable->bans()->create([
115115
'created_by_type' => $bannedBy->getMorphClass(),
@@ -122,9 +122,9 @@ public function it_can_set_custom_ban_creator(): void
122122
/** @test */
123123
public function it_not_overwrite_ban_creator_with_auth_user_if_custom_value_is_provided(): void
124124
{
125-
$bannable = factory(User::class)->create();
126-
$bannedBy = factory(User::class)->create();
127-
$currentUser = factory(User::class)->create();
125+
$bannable = User::factory()->create();
126+
$bannedBy = User::factory()->create();
127+
$currentUser = User::factory()->create();
128128

129129
$this->actingAs($currentUser);
130130

@@ -175,9 +175,9 @@ public function it_can_make_model_with_expire_relative_date(): void
175175
/** @test */
176176
public function it_can_has_bannable_model(): void
177177
{
178-
$user = factory(User::class)->create();
178+
$user = User::factory()->create();
179179

180-
$ban = factory(Ban::class)->create([
180+
$ban = Ban::factory()->create([
181181
'bannable_id' => $user->getKey(),
182182
'bannable_type' => $user->getMorphClass(),
183183
]);
@@ -188,13 +188,13 @@ public function it_can_has_bannable_model(): void
188188
/** @test */
189189
public function it_can_scope_bannable_models(): void
190190
{
191-
$user1 = factory(User::class)->create();
192-
factory(Ban::class, 4)->create([
191+
$user1 = User::factory()->create();
192+
Ban::factory()->count(4)->create([
193193
'bannable_id' => $user1->getKey(),
194194
'bannable_type' => $user1->getMorphClass(),
195195
]);
196-
$user2 = factory(User::class)->create();
197-
factory(Ban::class, 3)->create([
196+
$user2 = User::factory()->create();
197+
Ban::factory()->count(3)->create([
198198
'bannable_id' => $user2->getKey(),
199199
'bannable_type' => $user2->getMorphClass(),
200200
]);

tests/Unit/Observers/BanObserverTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ final class BanObserverTest extends AbstractTestCase
2121
/** @test */
2222
public function it_can_set_banned_flag_to_owner_model_on_create(): void
2323
{
24-
$user = factory(User::class)->create([
24+
$user = User::factory()->create([
2525
'banned_at' => null,
2626
]);
2727

28-
$user->bans()->create([]);
28+
$user->bans()->create();
2929

3030
$user->refresh();
3131
$this->assertNotNull($user->banned_at);

tests/Unit/Scopes/BannedAtScopeTest.php

+10-11
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@ final class BannedAtScopeTest extends AbstractTestCase
2323
/** @test */
2424
public function it_can_get_all_models_by_default(): void
2525
{
26-
factory(User::class, 2)->create([
26+
User::factory()->count(2)->create([
2727
'banned_at' => Carbon::now()->subDay(),
2828
]);
29-
30-
factory(User::class, 3)->create([
29+
User::factory()->count(3)->create([
3130
'banned_at' => null,
3231
]);
3332

@@ -39,10 +38,10 @@ public function it_can_get_all_models_by_default(): void
3938
/** @test */
4039
public function it_can_get_models_without_banned(): void
4140
{
42-
factory(User::class, 2)->create([
41+
User::factory()->count(2)->create([
4342
'banned_at' => Carbon::now()->subDay(),
4443
]);
45-
factory(User::class, 3)->create([
44+
User::factory()->count(3)->create([
4645
'banned_at' => null,
4746
]);
4847

@@ -54,10 +53,10 @@ public function it_can_get_models_without_banned(): void
5453
/** @test */
5554
public function it_can_get_models_with_banned(): void
5655
{
57-
factory(User::class, 2)->create([
56+
User::factory()->count(2)->create([
5857
'banned_at' => Carbon::now()->subDay(),
5958
]);
60-
factory(User::class, 3)->create([
59+
User::factory()->count(3)->create([
6160
'banned_at' => null,
6261
]);
6362

@@ -69,10 +68,10 @@ public function it_can_get_models_with_banned(): void
6968
/** @test */
7069
public function it_can_get_only_banned_models(): void
7170
{
72-
factory(User::class, 2)->create([
71+
User::factory()->count(2)->create([
7372
'banned_at' => Carbon::now()->subDay(),
7473
]);
75-
factory(User::class, 3)->create([
74+
User::factory()->count(3)->create([
7675
'banned_at' => null,
7776
]);
7877

@@ -84,10 +83,10 @@ public function it_can_get_only_banned_models(): void
8483
/** @test */
8584
public function it_can_auto_apply_banned_at_default_scope(): void
8685
{
87-
factory(User::class, 3)->create([
86+
User::factory()->count(3)->create([
8887
'banned_at' => Carbon::now()->subDay(),
8988
]);
90-
factory(User::class, 2)->create([
89+
User::factory()->count(2)->create([
9190
'banned_at' => null,
9291
]);
9392

tests/Unit/Services/BanServiceTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ final class BanServiceTest extends AbstractTestCase
2323
/** @test */
2424
public function it_can_delete_all_expired_bans(): void
2525
{
26-
factory(Ban::class, 3)->create([
26+
Ban::factory()->count(3)->create([
2727
'expired_at' => Carbon::now()->subMonth(),
2828
]);
29-
factory(Ban::class, 4)->create([
29+
Ban::factory()->count(4)->create([
3030
'expired_at' => Carbon::now()->addMonth(),
3131
]);
3232
$banService = new BanService();

0 commit comments

Comments
 (0)