Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
83.33% covered (warning)
83.33%
5 / 6
80.00% covered (warning)
80.00%
4 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
FileUriStrategy
83.33% covered (warning)
83.33%
5 / 6
80.00% covered (warning)
80.00%
4 / 5
6.17
0.00% covered (danger)
0.00%
0 / 1
 supports
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getCreationMetadata
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getModificationMetadata
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getResultMetadata
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\Core\Metadata\Strategy;
3
4use Apie\Core\Context\ApieContext;
5use Apie\Core\FileStorage\StoredFile;
6use Apie\Core\Metadata\StoredFileMetadata;
7use Apie\Core\Metadata\StrategyInterface;
8use Apie\Core\Metadata\ValueObjectMetadata;
9use Apie\Core\ValueObjects\Interfaces\ValueObjectInterface;
10use Psr\Http\Message\UploadedFileInterface;
11use ReflectionClass;
12
13class FileUriStrategy implements StrategyInterface
14{
15    public static function supports(ReflectionClass $class): bool
16    {
17        $interfaces = $class->getInterfaceNames();
18        return (in_array(UploadedFileInterface::class, $interfaces, true) && in_array(ValueObjectInterface::class, $interfaces, true));
19    }
20
21    /**
22     * @param ReflectionClass<StoredFile> $class
23     */
24    public function __construct(private readonly ReflectionClass $class)
25    {
26    }
27
28    public function getCreationMetadata(ApieContext $context): ValueObjectMetadata
29    {
30        return new ValueObjectMetadata($this->class);
31    }
32
33    public function getModificationMetadata(ApieContext $context): ValueObjectMetadata
34    {
35        return $this->getCreationMetadata($context);
36    }
37
38    public function getResultMetadata(ApieContext $context): StoredFileMetadata
39    {
40        return new StoredFileMetadata($this->class, true, false);
41    }
42}