<?php declare(strict_types=1); namespace Laminas\Test\PHPUnit\Constraint; use function ltrim; use function strpos; use function strrpos; use function strtolower; use function substr; final class IsCurrentModuleNameConstraint extends LaminasConstraint { public function toString(): string { return 'is the actual module name'; } /** @param mixed $other */ public function failureDescription($other): string { $other = (string) $other; return "\"$other\" {$this->toString()}, actual module name is \"{$this->getCurrentModuleName()}\""; } /** @param mixed $other */ public function matches($other): bool { $other = (string) $other; return strtolower($other) === $this->getCurrentModuleName(); } public function getCurrentModuleName(): string { $controllerClass = $this->getControllerFullClassName(); $match = ''; $applicationConfig = $this->getTestCase()->getApplicationConfig(); // Find Module from Controller /** @var string $appModules */ foreach ($applicationConfig['modules'] as $appModules) { if (strpos($controllerClass, $appModules . '\\') !== false) { if (strpos($appModules, '\\') !== false) { $match = ltrim(substr($appModules, strrpos($appModules, '\\')), '\\'); } else { $match = ltrim($appModules); } } } return strtolower($match); } }