Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
DoctrineCategorySettingRepository
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
4 / 4
5
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 save
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 ofCategory
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 all
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace App\Expense\Infrastructure\Persistence\Doctrine;
6
7use App\Expense\Domain\Category;
8use App\Expense\Domain\CategorySetting;
9use App\Expense\Domain\CategorySettingRepository;
10use Doctrine\ORM\EntityManagerInterface;
11
12final class DoctrineCategorySettingRepository implements CategorySettingRepository
13{
14    public function __construct(private readonly EntityManagerInterface $entityManager)
15    {
16    }
17
18    public function save(CategorySetting $setting): void
19    {
20        $this->entityManager->persist($setting);
21        $this->entityManager->flush();
22    }
23
24    public function ofCategory(Category $category): ?CategorySetting
25    {
26        return $this->entityManager->find(CategorySetting::class, $category);
27    }
28
29    public function all(): array
30    {
31        $settings = [];
32        foreach ($this->entityManager->getRepository(CategorySetting::class)->findAll() as $setting) {
33            $settings[$setting->category()->value] = $setting;
34        }
35
36        return $settings;
37    }
38}