Completed
Push — master ( fb3793...9f5a47 )
by Adrien
07:09 queued 11s
created

AutoFilterTest::getXMLInstance()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 5
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 7
rs 10
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
4
5
use PhpOffice\PhpSpreadsheet\Reader\Xlsx\AutoFilter;
6
use PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter as WorksheetAutoFilter;
7
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
8
use PHPUnit\Framework\TestCase;
9
10
class AutoFilterTest extends TestCase
11
{
12
    private function getWorksheetInstance()
13
    {
14
        return $this->getMockBuilder(Worksheet::class)
15
            ->disableOriginalConstructor()
16
            ->getMock();
17
    }
18
19
    private function getXMLInstance($ref)
20
    {
21
        return new \SimpleXMLElement(
22
            '<?xml version="1.0" encoding="UTF-8"?>' .
23
            '<root>' .
24
                '<autoFilter ref="' . $ref . '"></autoFilter>' .
25
            '</root>'
26
        );
27
    }
28
29
    private function getAutoFilterInstance()
30
    {
31
        $instance = $this->getMockBuilder(WorksheetAutoFilter::class)
32
            ->disableOriginalConstructor()
33
            ->getMock();
34
35
        return $instance;
36
    }
37
38
    public function loadDataProvider()
39
    {
40
        return [
41
            ['$B3$E8', 0, 'B3E8'],
42
            ['$B3:$E8', 1, 'B3:E8'],
43
        ];
44
    }
45
46
    /**
47
     * @dataProvider loadDataProvider
48
     *
49
     * @param string $ref
50
     * @param int $expectedReadAutoFilterCalled
51
     * @param string $expectedRef
52
     */
53
    public function testLoad($ref, $expectedReadAutoFilterCalled, $expectedRef)
54
    {
55
        $worksheetAutoFilter = $this->getAutoFilterInstance();
56
        $worksheetAutoFilter->expects($this->exactly($expectedReadAutoFilterCalled ? 1 : 0))
57
            ->method('setRange')
58
            ->with($expectedRef);
59
60
        $worksheet = $this->getWorksheetInstance();
61
        $worksheet->expects($this->exactly($expectedReadAutoFilterCalled ? 1 : 0))
62
            ->method('getAutoFilter')
63
            ->willReturn($worksheetAutoFilter);
64
65
        $autoFilter = new AutoFilter($worksheet, $this->getXMLInstance($ref));
66
67
        $autoFilter->load();
68
    }
69
}
70