Passed
Push — 1.6 ( c1892f...19716f )
by Robbie
02:51
created

BasePageTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 9
dl 0
loc 77
rs 10
c 1
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A testHomePagePdfLink() 0 4 1
A localeProvider() 0 6 1
A testGetSelectedLanguage() 0 9 2
A tearDown() 0 4 1
A testPdfLinkDisabled() 0 5 1
A testPdfLink() 0 4 1
A setUp() 0 7 1
A testPdfFilename() 0 7 1
1
<?php
2
class BasePageTest extends SapphireTest
3
{
4
    public static $fixture_file = 'BasePageTest.yml';
5
6
    public function setUp()
7
    {
8
        parent::setUp();
9
10
        Config::nest();
11
        Config::inst()->update('BasePage', 'pdf_export', true);
12
        Config::inst()->update('BasePage', 'generated_pdf_path', 'assets/_generated_pdfs');
13
    }
14
15
    public function testPdfFilename()
16
    {
17
        $page = $this->objFromFixture('BasePage', 'test-page-one');
18
        $this->assertContains(
19
            'assets/_generated_pdfs/test-page-one-1.pdf',
20
            $page->getPdfFilename(),
21
            'Generated filename for PDF'
22
        );
23
    }
24
25
    public function testPdfLink()
26
    {
27
        $page = $this->objFromFixture('BasePage', 'test-page-one');
28
        $this->assertContains('test-page-one/downloadpdf', $page->PdfLink(), 'Link to download PDF');
29
    }
30
31
    public function testHomePagePdfLink()
32
    {
33
        $page = $this->objFromFixture('BasePage', 'home-page');
34
        $this->assertContains('home/downloadpdf', $page->PdfLink(), 'Link to download PDF');
35
    }
36
37
    public function testPdfLinkDisabled()
38
    {
39
        Config::inst()->update('BasePage', 'pdf_export', false);
40
        $page = $this->objFromFixture('BasePage', 'test-page-one');
41
        $this->assertFalse($page->PdfLink(), 'No PDF link as the functionality is disabled');
42
    }
43
44
    /**
45
     * Test that the native language name can be returned for the current locale
46
     *
47
     * @see i18n
48
     * @param string $locale
49
     * @param string $expected
50
     * @dataProvider localeProvider
51
     */
52
    public function testGetSelectedLanguage($locale, $expected)
53
    {
54
        if (!class_exists('Translatable')) {
55
            $this->markTestSkipped('Language tests require Translatable module.');
56
        }
57
58
        Translatable::set_current_locale($locale);
0 ignored issues
show
Bug introduced by
The type Translatable was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
59
        $page = $this->objFromFixture('BasePage', 'test-page-one');
60
        $this->assertSame($expected, $page->getSelectedLanguage());
61
    }
62
63
    /**
64
     * @return array[]
65
     */
66
    public function localeProvider()
67
    {
68
        return array(
69
            array('en_NZ', 'English'),
70
            array('af_ZA', 'Afrikaans'),
71
            array('es_ES', 'espa&ntilde;ol')
72
        );
73
    }
74
75
    public function tearDown()
76
    {
77
        Config::unnest();
78
        parent::tearDown();
79
    }
80
}
81