Completed
Push — master ( 0ebf95...33622c )
by Damian
12s
created

FileSubsitesTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 87
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testTrivialFeatures() 0 12 1
B testWritingSubsiteID() 0 37 1
A testSubsitesFolderDropdown() 0 21 1
1
<?php
2
3
namespace SilverStripe\Subsites\Tests;
4
5
use SilverStripe\Assets\File;
6
use SilverStripe\Assets\Folder;
7
use SilverStripe\Forms\FieldList;
8
use SilverStripe\Subsites\Extensions\FileSubsites;
9
use SilverStripe\Subsites\Model\Subsite;
10
11
class FileSubsitesTest extends BaseSubsiteTest
12
{
13
    protected static $fixture_file = 'SubsiteTest.yml';
14
15
    /**
16
     * Disable other file extensions
17
     *
18
     * @var array
19
     */
20
    protected static $illegal_extensions = [
21
        SiteTree::class => ['Translatable'], // @todo implement namespace for Translatable
22
    ];
23
24
    public function testTrivialFeatures()
25
    {
26
        $this->assertTrue(is_array(singleton(FileSubsites::class)->extraStatics()));
27
        $file = new File();
28
        $file->Name = 'FileTitle';
29
        $file->Title = 'FileTitle';
30
        $this->assertEquals(' * FileTitle', $file->alternateTreeTitle());
31
        $file->SubsiteID = $this->objFromFixture(Subsite::class, 'domaintest1')->ID;
32
        $this->assertEquals('FileTitle', $file->getTreeTitle());
33
        $this->assertInstanceOf(FieldList::class, singleton(Folder::class)->getCMSFields());
34
        Subsite::changeSubsite(1);
35
        $this->assertEquals('subsite-1', $file->getExtensionInstance(FileSubsites::class)->cacheKeyComponent());
0 ignored issues
show
Bug introduced by
The method cacheKeyComponent() does not exist on SilverStripe\Core\Extension. It seems like you code against a sub-type of SilverStripe\Core\Extension such as SilverStripe\Subsites\Extensions\FileSubsites or SilverStripe\Subsites\Ex...ions\SiteConfigSubsites or SilverStripe\Subsites\Extensions\SiteTreeSubsites or SilverStripe\Versioned\Versioned. ( Ignorable by Annotation )

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

35
        $this->assertEquals('subsite-1', $file->getExtensionInstance(FileSubsites::class)->/** @scrutinizer ignore-call */ cacheKeyComponent());
Loading history...
36
    }
37
38
    public function testWritingSubsiteID()
39
    {
40
        $this->logInAs('admin');
41
42
        $subsite = $this->objFromFixture(Subsite::class, 'domaintest1');
43
        FileSubsites::$default_root_folders_global = true;
44
45
        Subsite::changeSubsite(0);
46
        $file = new File();
47
        $file->write();
48
        $file->onAfterUpload();
49
        $this->assertEquals((int)$file->SubsiteID, 0);
50
51
        Subsite::changeSubsite($subsite->ID);
52
        $this->assertTrue($file->canEdit());
53
54
        $file = new File();
55
        $file->write();
56
        $this->assertEquals((int)$file->SubsiteID, 0);
57
        $this->assertTrue($file->canEdit());
58
59
        FileSubsites::$default_root_folders_global = false;
60
61
        Subsite::changeSubsite($subsite->ID);
62
        $file = new File();
63
        $file->write();
64
        $this->assertEquals($file->SubsiteID, $subsite->ID);
65
66
        // Test inheriting from parent folder
67
        $folder = new Folder();
68
        $folder->write();
69
        $this->assertEquals($folder->SubsiteID, $subsite->ID);
70
        FileSubsites::$default_root_folders_global = true;
71
        $file = new File();
72
        $file->ParentID = $folder->ID;
73
        $file->onAfterUpload();
74
        $this->assertEquals($folder->SubsiteID, $file->SubsiteID);
75
    }
76
77
    public function testSubsitesFolderDropdown()
78
    {
79
        $this->logInAs('admin');
80
81
        $file = new Folder();
82
83
        $source = array_values($file->getCMSFields()->dataFieldByName('SubsiteID')->getSource());
84
        asort($source);
85
86
        $this->assertEquals([
87
            'Main site',
88
            'Subsite1 Template',
89
            'Subsite2 Template',
90
            'Template',
91
            'Test 1',
92
            'Test 2',
93
            'Test 3',
94
            'Test Non-SSL',
95
            'Test SSL',
96
            'Test Vagrant VM on port 8080'
97
        ], array_values($source));
98
    }
99
}
100