Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
1 / 1
UploadedFile
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
5 / 5
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
 createRandomFile
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 getId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getFile
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getStream
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2namespace Apie\IntegrationTests\Apie\TypeDemo\Resources;
3
4use Apie\Core\Attributes\AllowMultipart;
5use Apie\Core\Attributes\Context;
6use Apie\Core\Attributes\FakeCount;
7use Apie\Core\Attributes\RemovalCheck;
8use Apie\Core\Attributes\ResourceName;
9use Apie\Core\Attributes\StaticCheck;
10use Apie\Core\BoundedContext\BoundedContextId;
11use Apie\Core\Datalayers\ApieDatalayer;
12use Apie\Core\Entities\EntityInterface;
13use Apie\Core\FileStorage\ImageFile;
14use Apie\Core\FileStorage\StoredFile;
15use Apie\IntegrationTests\Apie\TypeDemo\Identifiers\UploadedFileIdentifier;
16use Psr\Http\Message\UploadedFileInterface;
17
18#[RemovalCheck(new StaticCheck())]
19#[ResourceName('File')]
20#[FakeCount(1)]
21#[AllowMultipart]
22final class UploadedFile implements EntityInterface
23{
24    public function __construct(
25        private UploadedFileIdentifier $id,
26        private UploadedFileInterface $file,
27        public ?ImageFile $imageFile = null
28    ) {
29    }
30    
31    public static function createRandomFile(
32        #[Context]
33        ApieDatalayer $apieDatalayer
34    ): UploadedFile {
35        $file = new UploadedFile(
36            UploadedFileIdentifier::createRandom(),
37            StoredFile::createFromString('file contents', clientOriginalFile: 'example.txt')
38        );
39        $apieDatalayer->persistNew($file, new BoundedContextId('types'));
40        return $file;
41    }
42
43    public function getId(): UploadedFileIdentifier
44    {
45        return $this->id;
46    }
47
48    public function getFile(): UploadedFileInterface
49    {
50        return $this->file;
51    }
52
53    public function getStream(): mixed
54    {
55        return $this->file->getStream()->detach();
56    }
57}