Skip to content

Commit 00ef56a

Browse files
marmichalskihgraca
andauthored
Prevent duplicate namespaces in ResideInOneOfTheseNamespaces (#431)
* Prevent duplicate namespaces in ResideInOneOfTheseNamespaces * Add test * Reindex namespaces --------- Co-authored-by: Herberto Graca <[email protected]>
1 parent 204026e commit 00ef56a

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/Expression/ForClasses/ResideInOneOfTheseNamespaces.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class ResideInOneOfTheseNamespaces implements Expression
1818

1919
public function __construct(string ...$namespaces)
2020
{
21-
$this->namespaces = $namespaces;
21+
$this->namespaces = array_values(array_unique($namespaces));
2222
}
2323

2424
public function describe(ClassDescription $theClass, string $because): Description

tests/Unit/Expressions/ForClasses/ResideInOneOfTheseNamespacesTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,14 @@ public function test_it_should_check_multiple_namespaces_in_or(): void
8484
$haveNameMatching->evaluate($classDesc, $violations, $because);
8585
self::assertNotEquals(0, $violations->count());
8686
}
87+
88+
public function test_duplicate_namespaces_are_removed(): void
89+
{
90+
$expression = new ResideInOneOfTheseNamespaces('A', 'B', 'A', 'C', 'D', 'D');
91+
92+
self::assertSame(
93+
'should reside in one of these namespaces: A, B, C, D because rave',
94+
$expression->describe(ClassDescription::getBuilder('Marko')->build(), 'rave')->toString()
95+
);
96+
}
8797
}

0 commit comments

Comments
 (0)