Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
InterfaceFaker
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 supports
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 fakeFor
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\Faker\Fakers;
3
4use Apie\Core\Attributes\ConcreteClasses;
5use Apie\Faker\Interfaces\ApieClassFaker;
6use Faker\Generator;
7use ReflectionClass;
8
9/** @implements ApieClassFaker<object> */
10class InterfaceFaker implements ApieClassFaker
11{
12    public function supports(ReflectionClass $class): bool
13    {
14        return !empty($class->getAttributes(ConcreteClasses::class));
15    }
16
17    public function fakeFor(Generator $generator, ReflectionClass $class): object
18    {
19        $randomAttribute = $generator->randomElement($class->getAttributes(ConcreteClasses::class));
20        $randomClass = $generator->randomElement($randomAttribute->newInstance()->classes);
21        return $generator->fakeClass($randomClass);
22    }
23}