Skip to content

Commit 321a7f8

Browse files
authored
Fixes duplicate entries and adds a test (#249)
* Fixes duplicate entries and adds a test * CS Fixes
1 parent a7306b9 commit 321a7f8

File tree

2 files changed

+74
-14
lines changed

2 files changed

+74
-14
lines changed

src/Set/LaravelSetProvider.php

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace RectorLaravel\Set;
44

5+
use Rector\Set\Contract\SetInterface;
56
use Rector\Set\Contract\SetProviderInterface;
67
use Rector\Set\ValueObject\Set;
78
use RectorLaravel\Set\Packages\Livewire\LivewireSetList;
@@ -37,6 +38,9 @@ final class LaravelSetProvider implements SetProviderInterface
3738
LaravelSetList::LARAVEL_110,
3839
];
3940

41+
/**
42+
* @return SetInterface[]
43+
*/
4044
public function provide(): array
4145
{
4246
return [
@@ -45,28 +49,16 @@ public function provide(): array
4549
'array/str func to static calls',
4650
LaravelSetList::ARRAY_STR_FUNCTIONS_TO_STATIC_CALL
4751
),
48-
new Set(self::GROUP_NAME, 'Code quality', LaravelSetList::LARAVEL_CODE_QUALITY),
4952
new Set(
5053
self::GROUP_NAME,
51-
'Container strings to FQN types',
52-
LaravelSetList::LARAVEL_CONTAINER_STRING_TO_FULLY_QUALIFIED_NAME,
53-
),
54-
new Set(
55-
'Laravel Code Quality',
56-
'array/str functions to static calls',
57-
LaravelSetList::ARRAY_STR_FUNCTIONS_TO_STATIC_CALL
54+
'Code quality',
55+
LaravelSetList::LARAVEL_CODE_QUALITY
5856
),
59-
new Set(self::GROUP_NAME, 'Code quality', LaravelSetList::LARAVEL_CODE_QUALITY),
6057
new Set(
6158
self::GROUP_NAME,
6259
'Container strings to FQN types',
6360
LaravelSetList::LARAVEL_CONTAINER_STRING_TO_FULLY_QUALIFIED_NAME,
6461
),
65-
new Set(
66-
self::GROUP_NAME,
67-
'Code Quality for Laravel',
68-
LaravelSetList::LARAVEL_CODE_QUALITY,
69-
),
7062
new Set(
7163
self::GROUP_NAME,
7264
'Replaces If statements with helpers',

tests/Sets/LaravelSetProviderTest.php

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
3+
namespace RectorLaravel\Tests\Sets;
4+
5+
use PHPUnit\Framework\Assert;
6+
use PHPUnit\Framework\TestCase;
7+
use Rector\Set\Contract\SetInterface;
8+
use RectorLaravel\Set\LaravelSetList;
9+
use RectorLaravel\Set\LaravelSetProvider;
10+
11+
final class LaravelSetProviderTest extends TestCase
12+
{
13+
private const LARAVEL_VERSION_SETS = [
14+
LaravelSetList::LARAVEL_50,
15+
LaravelSetList::LARAVEL_51,
16+
LaravelSetList::LARAVEL_52,
17+
LaravelSetList::LARAVEL_53,
18+
LaravelSetList::LARAVEL_54,
19+
LaravelSetList::LARAVEL_55,
20+
LaravelSetList::LARAVEL_56,
21+
LaravelSetList::LARAVEL_57,
22+
LaravelSetList::LARAVEL_58,
23+
LaravelSetList::LARAVEL_60,
24+
LaravelSetList::LARAVEL_70,
25+
LaravelSetList::LARAVEL_80,
26+
LaravelSetList::LARAVEL_90,
27+
LaravelSetList::LARAVEL_100,
28+
LaravelSetList::LARAVEL_110,
29+
];
30+
31+
public function testItProvidesSets(): void
32+
{
33+
$laravelSetProvider = new LaravelSetProvider();
34+
35+
Assert::assertContainsOnlyInstancesOf(
36+
SetInterface::class,
37+
$laravelSetProvider->provide()
38+
);
39+
}
40+
41+
public function testItReturnsUniqueSets(): void
42+
{
43+
$laravelSetProvider = new LaravelSetProvider();
44+
45+
$sets = $laravelSetProvider->provide();
46+
47+
$uniqueSets = array_unique(array_map(fn (SetInterface $set) => $set->getSetFilePath(), $sets));
48+
49+
Assert::assertCount(count($sets), $uniqueSets);
50+
}
51+
52+
public function testItProvidesAllLaravelVersions(): void
53+
{
54+
$laravelSetProvider = new LaravelSetProvider();
55+
56+
$sets = $laravelSetProvider->provide();
57+
58+
$sets = array_filter(
59+
array_map(
60+
fn (SetInterface $set) => $set->getSetFilePath(),
61+
$sets
62+
),
63+
fn (string $filePath) => in_array($filePath, self::LARAVEL_VERSION_SETS, true),
64+
);
65+
66+
Assert::assertCount(count(self::LARAVEL_VERSION_SETS), $sets);
67+
}
68+
}

0 commit comments

Comments
 (0)