PdfExportExtensionTest::testHomePagePdfLink()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 4
rs 10
1
<?php
2
3
namespace CWP\PDFExport\Tests\Extensions;
4
5
use CWP\CWP\PageTypes\BasePage;
6
use CWP\PDFExport\Extensions\PdfExportExtension;
7
use SilverStripe\Control\Director;
8
use SilverStripe\Core\Config\Config;
9
use SilverStripe\Dev\SapphireTest;
10
11
class PdfExportExtensionTest extends SapphireTest
12
{
13
    protected static $fixture_file = 'PdfExportExtensionTest.yml';
14
15
    protected static $required_extensions = [
16
        BasePage::class => [
17
            PdfExportExtension::class,
18
        ],
19
    ];
20
21
    protected function setUp()
22
    {
23
        parent::setUp();
24
25
        Config::modify()
26
            ->set(BasePage::class, 'pdf_export', true)
27
            ->set(BasePage::class, 'generated_pdf_path', 'assets/_generated_pdfs');
28
    }
29
30
    /**
31
     * @param string $publicDir
32
     * @param string $expected
33
     * @dataProvider pdfFilenameProvider
34
     */
35
    public function testPdfFilenameWithoutPublicDirectory($publicDir, $expected)
36
    {
37
        Director::config()->set('alternate_public_dir', $publicDir);
38
39
        /** @var BasePage|PdfExportExtension $page $page */
40
        $page = $this->objFromFixture(BasePage::class, 'test-page-one');
41
        $this->assertContains($expected, $page->getPdfFilename());
42
    }
43
44
    /**
45
     * @return array[]
46
     */
47
    public function pdfFilenameProvider()
48
    {
49
        return [
50
            'no public folder' => ['', 'assets/_generated_pdfs/test-page-one-1.pdf'],
51
            'public folder' => ['public', 'public/assets/_generated_pdfs/test-page-one-1.pdf'],
52
        ];
53
    }
54
55
    public function testPdfLink()
56
    {
57
        $page = $this->objFromFixture(BasePage::class, 'test-page-one');
58
        $this->assertContains('test-page-one/downloadpdf', $page->PdfLink(), 'Link to download PDF');
59
    }
60
61
    public function testHomePagePdfLink()
62
    {
63
        $page = $this->objFromFixture(BasePage::class, 'home-page');
64
        $this->assertContains('home/downloadpdf', $page->PdfLink(), 'Link to download PDF');
65
    }
66
67
    public function testPdfLinkDisabled()
68
    {
69
        Config::modify()->set(BasePage::class, 'pdf_export', false);
70
        $page = $this->objFromFixture(BasePage::class, 'test-page-one');
71
        $this->assertFalse($page->PdfLink(), 'No PDF link as the functionality is disabled');
72
    }
73
}
74