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
|
|
|
|