Passed
Push — master ( 671b4b...06a963 )
by Gabriel
04:41
created

PdfLetterTraitTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 43
c 1
b 0
f 0
dl 0
loc 74
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testGenerateNewPdfObj() 0 12 1
A testGenerateFileWithMediaObject() 0 16 1
A testUploadFromRequestValid() 0 19 1
A testUploadFromRequestWithInvalidFileType() 0 18 1
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 Symfony\Component\HttpFoundation\File\UploadedFile;
13
use const setasign\Fpdi\TcpdfFpdi;
14
use setasign\Fpdi\Tcpdf\Fpdi;
15
16
/**
17
 * Class PdfLetterTraitTest
18
 * @package ByTIC\DocumentGenerator\Tests\PdfLetters
19
 */
20
class PdfLetterTraitTest extends AbstractTest
21
{
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
            null,
36
            true
37
        );
38
39
        $response = $letter->uploadFromRequest($uploadedFile);
40
        parent::assertInstanceOf(Media::class, $response);
41
        self::assertFileExists(TEST_FIXTURE_PATH . '/files/pdf_letters/10/file.pdf');
42
    }
43
44
    public function testUploadFromRequestWithInvalidFileType()
45
    {
46
        $letter = new PdfLetter();
47
        $letter->id = 10;
48
49
        $letter->setManager(PdfLetters::instance());
50
51
        $uploadedFile = new UploadedFile(
52
            TEST_FIXTURE_PATH . '/files/file.pdf',
53
            'test original name.doc',
54
            null,
55
            null,
56
            null,
57
            true
58
        );
59
60
        $response = $letter->uploadFromRequest($uploadedFile);
61
        parent::assertSame('INVALID_MIME_TYPE_ERROR', $response);
62
    }
63
64
    public function testGenerateNewPdfObj()
65
    {
66
        $letter = new PdfLetter();
67
        $letter->id = 99;
68
69
        $letter->setManager(PdfLetters::instance());
70
71
        $pdf = $letter->generateNewPdfObj();
72
        $output = $pdf->Output('output.pdf', 'S');
73
74
        parent::assertStringStartsWith('%PDF-1.7', $output);
75
        parent::assertStringContainsString('%%EOF', $output);
76
    }
77
78
    public function testGenerateFileWithMediaObject()
79
    {
80
        /** @var PdfLetter|Mockery\Mock $letter */
81
        $letter = Mockery::mock(PdfLetter::class);
82
        $letter->shouldReceive('getCustomFields')->andReturn([]);
83
        $letter = $letter->makePartial();
84
85
        $letter->setManager(PdfLetters::instance());
86
        $letter->id = 99;
87
88
        $recipient = new Recipient();
89
        $mediaRecord = Mockery::mock(MediaRecord::class);
90
        $mediaRecord->shouldReceive('addFileFromContent');
91
92
        $pdf = $letter->generateFile($recipient, $mediaRecord);
93
        self::assertInstanceOf(Fpdi::class, $pdf);
94
    }
95
}
96