CardScheme   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
eloc 17
dl 0
loc 33
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A generateForProperty() 0 25 5
1
<?php
2
3
namespace Er1z\FakeMock\Generator\AssertGenerator;
4
5
use Er1z\FakeMock\Metadata\FieldMetadata;
6
use Faker\Generator;
7
use Symfony\Component\Validator\Constraint;
0 ignored issues
show
Bug introduced by
The type Symfony\Component\Validator\Constraint was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
9
class CardScheme implements GeneratorInterface
10
{
11
    const SUPPORTED_PROVIDERS = [
12
        'visa' => 'Visa',
13
        'amex' => 'American Express',
14
        'mastercard' => 'Mastercard',
15
    ];
16
17 6
    public function generateForProperty(FieldMetadata $field, Constraint $constraint, Generator $faker)
18
    {
19
        /**
20
         * @var \Symfony\Component\Validator\Constraints\CardScheme
21
         */
22 6
        $providers = $constraint->schemes;
23
24 6
        $provider = null;
25 6
        if (!empty($providers)) {
26 6
            foreach ($providers as $p) {
27 6
                $p = strtolower($p);
28 6
                if (array_key_exists($p, self::SUPPORTED_PROVIDERS)) {
29 3
                    $provider = self::SUPPORTED_PROVIDERS[$p];
30 5
                    break;
31
                }
32
            }
33
34 6
            if (empty($provider)) {
35 3
                throw new \InvalidArgumentException(
36 3
                    sprintf('Cannot find supported among: %s', implode(', ', $providers))
37
                );
38
            }
39
        }
40
41 3
        return $faker->creditCardNumber($provider);
42
    }
43
}
44