Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
93.33% covered (success)
93.33%
14 / 15
75.00% covered (warning)
75.00%
3 / 4
66.67% covered (warning)
66.67%
2 / 3
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
ReportNotificationPropsBuilder
93.33% covered (success)
93.33%
14 / 15
75.00% covered (warning)
75.00%
3 / 4
66.67% covered (warning)
66.67%
2 / 3
50.00% covered (danger)
50.00%
1 / 2
3.33
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 buildProps
92.86% covered (success)
92.86%
13 / 14
66.67% covered (warning)
66.67%
2 / 3
50.00% covered (danger)
50.00%
1 / 2
0.00% covered (danger)
0.00%
0 / 1
2.50
1<?php
2
3namespace App\Service\Notification\Factory;
4
5use App\Entity\Report;
6use App\Enum\NotificationType;
7use Symfony\Component\DependencyInjection\Attribute\AsTaggedItem;
8use Symfony\Component\DependencyInjection\Attribute\Autowire;
9
10/**
11 * @author Wilhelm Zwertvaegher
12 */
13#[AsTaggedItem(index: Report::class)]
14readonly class ReportNotificationPropsBuilder implements NotificationPropsBuilder
15{
16    public function __construct(
17        #[Autowire('%recipient.admin%')]
18        private string $adminEmail,
19    ) {
20    }
21
22    public function buildProps(object $source): NotificationProps
23    {
24        if (!is_a($source, Report::class)) {
25            throw new \InvalidArgumentException('$source must be a Contact');
26        }
27
28        return new NotificationProps(
29            NotificationType::REPORT,
30            $this->adminEmail,
31            'Nick report',
32            sprintf(
33                "A nick has been reported : %s (%d)\nBy: %s\nReason : %s",
34                $source->getNick()->getLabel(),
35                $source->getNick()->getId(),
36                $source->getSenderEmail(),
37                $source->getReason()
38            ),
39        );
40    }
41}