Passed
Push — master ( 8f7a40...e78bca )
by
unknown
16:52 queued 09:09
created

Issue4542Test::testXmlSpace()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 59
Code Lines 44

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 44
c 1
b 0
f 0
dl 0
loc 59
rs 9.216
cc 1
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
6
7
use PhpOffice\PhpSpreadsheet\Cell\DataType;
8
use PhpOffice\PhpSpreadsheet\Spreadsheet;
9
use PhpOffice\PhpSpreadsheet\Worksheet\Table;
10
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter;
11
use PHPUnit\Framework\TestCase;
12
13
class Issue4542Test extends TestCase
14
{
15
    public function testXmlSpace(): void
16
    {
17
        $spreadsheet = new Spreadsheet();
18
        $sheet = $spreadsheet->getActiveSheet();
19
        $string = ' Ye&ar ';
20
        $trimString = trim($string);
21
        $sheet->getCell('A1')->setValue($string);
22
        $sheet->getCell('A2')->setValueExplicit($string, DataType::TYPE_INLINE);
23
        $sheet->getCell('B1')->setValue($trimString);
24
        $sheet->getCell('B2')->setValueExplicit($trimString, DataType::TYPE_INLINE);
25
        $writer = new XlsxWriter($spreadsheet);
26
27
        $writer->createStyleDictionaries();
28
        $writerStyle = new XlsxWriter\Style($writer);
29
        $data = $writerStyle->writeStyles($spreadsheet);
30
        self::assertStringContainsString(
31
            '<styleSheet',
32
            $data
33
        );
34
        self::assertStringNotContainsString(
35
            'xml:space',
36
            $data
37
        );
38
39
        $writerWorkbook = new XlsxWriter\Workbook($writer);
40
        $data = $writerWorkbook->writeWorkbook($spreadsheet);
41
        self::assertStringContainsString(
42
            '<workbook',
43
            $data
44
        );
45
        self::assertStringNotContainsString(
46
            'xml:space',
47
            $data
48
        );
49
50
        $stringTable = $writer->createStringTable();
51
        $writerStringTable = new XlsxWriter\StringTable($writer);
52
        $data = $writerStringTable->writeStringTable($stringTable);
53
        self::assertStringContainsString(
54
            '<si><t xml:space="preserve"> Ye&amp;ar </t></si>',
55
            $data
56
        );
57
        self::assertStringContainsString(
58
            '<si><t>Ye&amp;ar</t></si>',
59
            $data
60
        );
61
62
        $writerWorksheet = new XlsxWriter\Worksheet($writer);
63
        $data = $writerWorksheet->writeWorksheet($sheet, []);
64
        self::assertStringContainsString(
65
            '<c r="A2" t="inlineStr"><is><t xml:space="preserve"> Ye&amp;ar </t></is></c>',
66
            $data
67
        );
68
        self::assertStringContainsString(
69
            '<c r="B2" t="inlineStr"><is><t>Ye&amp;ar</t></is></c>',
70
            $data
71
        );
72
73
        $spreadsheet->disconnectWorksheets();
74
    }
75
76
    public function testTable(): void
77
    {
78
        $spreadsheet = new Spreadsheet();
79
        $sheet = $spreadsheet->getActiveSheet();
80
        $sheet->fromArray(
81
            [
82
                ['MyCol', 'Colonne2', 'Colonne3'],
83
                [10, 20],
84
                [2],
85
                [3],
86
                [4],
87
            ],
88
            null,
89
            'B1',
90
            true
91
        );
92
        $table = new Table('B1:D5', 'Tableau1');
93
        $sheet->addTable($table);
94
95
        $writer = new XlsxWriter($spreadsheet);
96
        $writerTable = new XlsxWriter\Table($writer);
97
        $data = $writerTable->writeTable($table, 1);
98
99
        self::assertStringContainsString(
100
            '<table ',
101
            $data
102
        );
103
        self::assertStringNotContainsString(
104
            'xml:space',
105
            $data
106
        );
107
        $spreadsheet->disconnectWorksheets();
108
    }
109
}
110