Passed
Branch master (d86252)
by Laurens
03:52 queued 53s
created

CsvTest   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 124
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 6
Bugs 0 Features 0
Metric Value
wmc 9
c 6
b 0
f 0
lcom 1
cbo 2
dl 0
loc 124
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A testArrayToCsvLine() 0 15 1
A getCsvArray() 0 20 1
A testRemoveOneLastLine() 0 9 1
A testRemoveTwoLastLine() 0 9 1
A testFixDate() 0 15 1
A testRemoveAllHeaders() 0 14 1
A testRemoveFileHeaders() 0 15 1
A testRemoveAllHeadersInCount() 0 8 1
A testRemoveFileHeadersAsCount() 0 8 1
1
<?php
2
3
namespace Tests\Werkspot\BingAdsApiBundle\Api\Helper;
4
5
use PHPUnit_Framework_TestCase;
6
use Werkspot\BingAdsApiBundle\Api\Helper\Csv;
7
8
class CsvTest extends PHPUnit_Framework_TestCase
9
{
10
    public function testRemoveOneLastLine()
11
    {
12
        $csvArray = $this->getCsvArray();
13
14
        $csvHelper = new Csv();
15
        $result = $csvHelper->removeLastLines($csvArray);
16
17
        $this->assertEquals((count($csvArray) - 1), count($result));
18
    }
19
20
    public function testRemoveTwoLastLine()
21
    {
22
        $csvArray = $this->getCsvArray();
23
24
        $csvHelper = new Csv();
25
        $result = $csvHelper->removeLastLines($csvArray, 2);
26
27
        $this->assertEquals((count($csvArray) - 2), count($result));
28
    }
29
30
    public function testFixDate()
31
    {
32
        $csvArray = [
33
            '"11/11/1988","account_1","1","group 1","1","0","EUR","0.00","Italy","","Bolzano","","Bolzano"',
34
            '"4/22/2007","account_1","2","group 2","4","0","EUR","0.00","Italy","","Milan","","Milan"',
35
        ];
36
        $csvHelper = new Csv();
37
        $result = $csvHelper->convertDateMDYtoYMD($csvArray);
38
39
        $expectedResult = [
40
            "\"1988/11/11\",\"account_1\",\"1\",\"group 1\",\"1\",\"0\",\"EUR\",\"0.00\",\"Italy\",\"\",\"Bolzano\",\"\",\"Bolzano\"\r\n",
41
            "\"2007/04/22\",\"account_1\",\"2\",\"group 2\",\"4\",\"0\",\"EUR\",\"0.00\",\"Italy\",\"\",\"Milan\",\"\",\"Milan\"\r\n",
42
        ];
43
        $this->assertEquals($expectedResult, $result);
44
    }
45
46
    public function testRemoveAllHeaders()
47
    {
48
        $csvArray = $this->getCsvArray();
49
        $csvHelper = new Csv();
50
        $result = $csvHelper->removeHeaders($csvArray);
51
52
        $expectedResult = [
53
            '"11/11/1988","account_1","1","group 1","1","0","EUR","0.00","Italy","","Bolzano","","Bolzano"',
54
            '"4/22/2007","account_1","2","group 2","4","0","EUR","0.00","Italy","","Milan","","Milan"',
55
            '',
56
            '"©2016 Microsoft Corporation. All rights reserved. "',
57
        ];
58
        $this->assertEquals($expectedResult, $result);
59
    }
60
61
    public function testRemoveFileHeaders()
62
    {
63
        $csvArray = $this->getCsvArray();
64
        $csvHelper = new Csv();
65
        $result = $csvHelper->removeHeaders($csvArray, false);
66
67
        $expectedResult = [
68
            '"GregorianDate","AccountName","AdGroupId","AdGroupName","Impressions","Clicks","CurrencyCode","Spend","CountryOrRegion","City","State","MetroArea","MostSpecificLocation"',
69
            '"11/11/1988","account_1","1","group 1","1","0","EUR","0.00","Italy","","Bolzano","","Bolzano"',
70
            '"4/22/2007","account_1","2","group 2","4","0","EUR","0.00","Italy","","Milan","","Milan"',
71
            '',
72
            '"©2016 Microsoft Corporation. All rights reserved. "',
73
        ];
74
        $this->assertEquals($expectedResult, $result);
75
    }
76
77
    public function testRemoveAllHeadersInCount()
78
    {
79
        $csvArray = $this->getCsvArray();
80
        $csvHelper = new Csv();
81
        $result = $csvHelper->removeHeaders($csvArray);
82
83
        $this->assertEquals((count($csvArray) - 11), count($result));
84
    }
85
86
    public function testRemoveFileHeadersAsCount()
87
    {
88
        $csvArray = $this->getCsvArray();
89
        $csvHelper = new Csv();
90
        $result = $csvHelper->removeHeaders($csvArray, false);
91
92
        $this->assertEquals((count($csvArray) - 10), count($result));
93
    }
94
95
    public function testArrayToCsvLine()
96
    {
97
        $array = [
98
            'one',
99
            'two',
100
            'three',
101
        ];
102
103
        $csvHelper = new Csv();
104
        $result = $csvHelper->arrayToCsvLine($array);
105
        $this->assertEquals("one,two,three\r\n", $result);
106
107
        $result = $csvHelper->arrayToCsvLine($array, '.', '"');
108
        $this->assertEquals("\"one\".\"two\".\"three\"\r\n", $result);
109
    }
110
111
    private function getCsvArray()
112
    {
113
        return [
114
            '"Report Name: GeoLocationPerformanceReportRequest"',
115
            '"Report Time: 2/28/2016"',
116
            '"Time Zone: (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"',
117
            '"Last Completed Available Day: 2/29/2016 9:00:00 AM (GMT)"',
118
            '"Last Completed Available Hour: 2/29/2016 9:00:00 AM (GMT)"',
119
            '"Report Aggregation: Daily"',
120
            '"Report Filter: "',
121
            '"Potential Incomplete Data: false"',
122
            '"Rows: 2"',
123
            '',
124
            '"GregorianDate","AccountName","AdGroupId","AdGroupName","Impressions","Clicks","CurrencyCode","Spend","CountryOrRegion","City","State","MetroArea","MostSpecificLocation"',
125
            '"11/11/1988","account_1","1","group 1","1","0","EUR","0.00","Italy","","Bolzano","","Bolzano"',
126
            '"4/22/2007","account_1","2","group 2","4","0","EUR","0.00","Italy","","Milan","","Milan"',
127
            '',
128
            '"©2016 Microsoft Corporation. All rights reserved. "',
129
        ];
130
    }
131
}
132