scopeResolver = new DefaultScopeResolver(); } public function testHasScopeInterface() { $scope = new Scope(); $entity = new class($scope) implements HasScopeInterface { public function __construct(Scope $scope) { $this->scope = $scope; } public function getScope() { return $this->scope; } }; $this->assertTrue($this->scopeResolver->supports($entity)); $this->assertTrue($this->scopeResolver->isConcerned($entity)); $this->assertSame($scope, $this->scopeResolver->resolveScope($entity)); } public function testHasScopesInterface() { $entity = new class($scopeA = new Scope(), $scopeB = new Scope()) implements HasScopesInterface { public function __construct(Scope $scopeA, Scope $scopeB) { $this->scopes = [$scopeA, $scopeB]; } public function getScopes(): iterable { return $this->scopes; } }; $this->assertTrue($this->scopeResolver->supports($entity)); $this->assertTrue($this->scopeResolver->isConcerned($entity)); $this->assertIsArray($this->scopeResolver->resolveScope($entity)); $this->assertSame($scopeA, $this->scopeResolver->resolveScope($entity)[0]); $this->assertSame($scopeB, $this->scopeResolver->resolveScope($entity)[1]); } }