PdfLetterTraitTest::testGenerateNewPdfObj()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
dl 0
loc 21
rs 9.8666
c 2
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace ByTIC\DocumentGenerator\Tests\PdfLetters\Models\PdfLetters;
4
5
use ByTIC\DocumentGenerator\Tests\AbstractTest;
6
use ByTIC\DocumentGenerator\Tests\Fixtures\Models\MediaRecords\MediaRecord;
7
use ByTIC\DocumentGenerator\Tests\Fixtures\Models\PdfLetters\PdfLetter;
8
use ByTIC\DocumentGenerator\Tests\Fixtures\Models\PdfLetters\PdfLetters;
9
use ByTIC\DocumentGenerator\Tests\Fixtures\Models\Recipients\Recipient;
10
use ByTIC\MediaLibrary\Media\Media;
11
use Mockery;
12
use Nip\Filesystem\File;
13
use setasign\Fpdi\Tcpdf\Fpdi;
14
use Symfony\Component\HttpFoundation\File\UploadedFile;
15
use const setasign\Fpdi\TcpdfFpdi;
0 ignored issues
show
Bug introduced by
The constant setasign\Fpdi\TcpdfFpdi was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
16
17
/**
18
 * Class PdfLetterTraitTest
19
 * @package ByTIC\DocumentGenerator\Tests\PdfLetters
20
 */
21
class PdfLetterTraitTest extends AbstractTest
22
{
23
    public function testUploadFromRequestValid()
24
    {
25
        $letter = new PdfLetter();
26
        $letter->id = 10;
27
28
        $letter->setManager(PdfLetters::instance());
29
30
        $uploadedFile = new UploadedFile(
31
            TEST_FIXTURE_PATH . '/files/file.pdf',
32
            'test original name.pdf',
33
            'application/pdf',
34
            null,
35
            true
36
        );
37
38
        $response = $letter->uploadFromRequest($uploadedFile);
39
        parent::assertInstanceOf(Media::class, $response);
40
        self::assertFileExists(TEST_FIXTURE_PATH . '/files/pdf_letters/10/file.pdf');
41
    }
42
43
    public function testUploadFromRequestWithInvalidFileType()
44
    {
45
        $letter = new PdfLetter();
46
        $letter->id = 10;
47
48
        $letter->setManager(PdfLetters::instance());
49
50
        $uploadedFile = new UploadedFile(
51
            TEST_FIXTURE_PATH . '/files/file.pdf',
52
            'test original name.doc',
53
            null,
54
            null,
55
            true
56
        );
57
58
        $response = $letter->uploadFromRequest($uploadedFile);
59
        parent::assertSame('INVALID_MIME_TYPE_ERROR', $response);
60
    }
61
62
    public function testGenerateNewPdfObj()
63
    {
64
        /** @var PdfLetter|Mockery\Mock $letter */
65
        $letter = Mockery::mock(PdfLetter::class)->makePartial();
66
        $letter->id = 99;
0 ignored issues
show
Bug introduced by
The property id does not seem to exist on Mockery\Mock.
Loading history...
67
68
        $mediaFile = new Media();
69
        $mediaFile->setFile((new File())
70
            ->setPath('/files/pdf_letters/99/file.pdf')
71
            ->setFilesystem($letter->getMediaFilesystemDisk())
72
        );
73
74
        $letter->shouldReceive('getFile')->andReturn($mediaFile);
75
76
        $letter->setManager(PdfLetters::instance());
77
78
        $pdf = $letter->generateNewPdfObj();
79
        $output = $pdf->Output('output.pdf', 'S');
0 ignored issues
show
Bug introduced by
The method Output() does not exist on Mockery\LegacyMockInterface. It seems like you code against a sub-type of Mockery\LegacyMockInterface such as Mockery\Mock. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

79
        /** @scrutinizer ignore-call */ 
80
        $output = $pdf->Output('output.pdf', 'S');
Loading history...
80
81
        parent::assertStringStartsWith('%PDF-1.7', $output);
82
        parent::assertStringContainsString('%%EOF', $output);
83
    }
84
85
    public function testGenerateFileWithMediaObject()
86
    {
87
        /** @var PdfLetter|Mockery\Mock $letter */
88
        $letter = Mockery::mock(PdfLetter::class);
89
        $letter->shouldReceive('getCustomFields')->andReturn([]);
90
        $letter = $letter->makePartial();
91
92
        $letter->setManager(PdfLetters::instance());
93
        $letter->id = 99;
0 ignored issues
show
Bug introduced by
The property id does not seem to exist on Mockery\Mock.
Loading history...
94
95
        $mediaFile = new Media();
96
        $mediaFile->setFile((new File())
97
            ->setPath('/files/pdf_letters/99/file.pdf')
98
            ->setFilesystem($letter->getMediaFilesystemDisk())
99
        );
100
101
        $letter->shouldReceive('getFile')->andReturn($mediaFile);
102
103
        $recipient = new Recipient();
104
        $mediaRecord = Mockery::mock(MediaRecord::class);
105
        $mediaRecord->shouldReceive('addFileFromContent');
106
107
        $pdf = $letter->generateFile($recipient, $mediaRecord);
108
        self::assertInstanceOf(Fpdi::class, $pdf);
109
    }
110
}
111