Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
22 / 22 |
| StudentConventionProvider | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
8 | |
100.00% |
22 / 22 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| generateReference | |
100.00% |
1 / 1 |
6 | |
100.00% |
17 / 17 |
|||
| normalizeString | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| <?php | |
| /* | |
| * This file is part of the Incipio package. | |
| * | |
| * (c) Théo FIDRY <theo.fidry@gmail.com> | |
| * | |
| * For the full copyright and license information, please view the LICENSE | |
| * file that was distributed with this source code. | |
| */ | |
| namespace ApiBundle\DataFixtures\Faker\Provider; | |
| use Faker\Generator; | |
| /** | |
| * @see ApiBundle\Entity\StudentConvention | |
| * | |
| * @author Théo FIDRY <theo.fidry@gmail.com> | |
| */ | |
| class StudentConventionProvider | |
| { | |
| /** | |
| * @var Generator | |
| */ | |
| private $faker; | |
| /** | |
| * @param Generator $faker | |
| */ | |
| public function __construct(Generator $faker) | |
| { | |
| $this->faker = $faker; | |
| } | |
| /** | |
| * Generates a student convention reference from the student full name and the date of signature of the convention. | |
| * | |
| * @param \DateTime $dateOfSignature | |
| * @param string|null $fullname If is null, a random name is used instead | |
| * | |
| * @return string | |
| */ | |
| public function generateReference(\DateTime $dateOfSignature, $fullname = null) | |
| { | |
| if (null === $fullname || '' === $fullname) { | |
| // It does not matter if the Faker instance is not based on the application locale as we don't really | |
| // care of the real value of the name. Keeping this avoid having to inject a faker instance which is | |
| // more difficul to properly test. | |
| $fullname = $this->faker->name(); | |
| } | |
| $fullnameParts = array_merge(explode(' ', $this->normalizeString($fullname)), ['a', 'b', 'c', 'd', 'e', 'f']); | |
| $reference = ''; | |
| foreach ($fullnameParts as $part) { | |
| $referenceLength = strlen($reference); | |
| if (6 === $referenceLength) { | |
| break; | |
| } | |
| $remaining = 6 - $referenceLength; | |
| if (3 < $remaining) { | |
| $remaining = 3; | |
| } | |
| $reference .= substr($part, 0, $remaining); | |
| } | |
| $reference .= $dateOfSignature->format('Ymd'); | |
| return strtoupper($reference); | |
| } | |
| /** | |
| * Removes any non letter characters from the string except for whitespaces. | |
| * | |
| * @param string $string | |
| * | |
| * @return string | |
| */ | |
| private function normalizeString($string) | |
| { | |
| $string = str_replace(' ', '______', $string); // Secure spaces | |
| $string = preg_replace('/[^A-Za-z\_]/', '', $string); // Removes special characters | |
| return str_replace('______', ' ', $string); | |
| } | |
| } |