Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
OfferFactory
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 create
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Alfa\Interview\Context\Factory;
6
7use Alfa\Interview\Context\Entity\Offer;
8use Alfa\Interview\Context\Enum\{AdditionalType, InsuranceType};
9use Alfa\Interview\Context\ValueObject\{Additional, Id, Insurance};
10
11class OfferFactory
12{
13    public function create(string $insuranceType, string ...$additionals): Offer
14    {
15        $insurance = new Insurance(InsuranceType::fromName($insuranceType));
16
17        $offer = new Offer(Id::generate(), $insurance);
18
19        foreach (array_unique($additionals) as $additional) {
20            $type = AdditionalType::fromName($additional);
21            $offer->addAdditional($type);
22        }
23
24        return $offer;
25    }
26}