. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace tests\unit; use Espo\Core\Container; use PHPUnit\Framework\MockObject\MockBuilder; use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount as AnyInvokedCountMatcher; use PHPUnit\Framework\TestCase; use ReflectionClass; class ContainerMocker { protected $test; public function __construct(TestCase $test) { $this->test = $test; } public function create(array $serviceMap) : Container { $container = (new MockBuilder($this->test, Container::class))->disableOriginalConstructor()->getMock(); $map = $serviceMap; $valueMap = []; $hasMap = []; $classMap = []; foreach ($map as $key => $value) { $valueMap[] = [$key, $value]; } foreach ($map as $key => $value) { $hasMap[] = [$key, true]; } foreach ($map as $key => $value) { $classMap[] = [$key, new ReflectionClass($value)]; } $container ->expects(new AnyInvokedCountMatcher) ->method('get') ->willReturnMap($valueMap); $container ->expects(new AnyInvokedCountMatcher) ->method('has') ->willReturnMap($hasMap); $container ->expects(new AnyInvokedCountMatcher) ->method('getClass') ->willReturnMap($classMap); return $container; } }