Passed
Push — master ( 99e8d5...14b05a )
by Daniel
01:54
created

testSetHeaderFromIndexesEmptyArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
3
/**
4
 * This file is part of the Csv-Machine package.
5
 *
6
 * (c) Dan McAdams <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace RoadBunch\Csv\Tests\Csv;
13
14
15
use PHPUnit\Framework\TestCase;
16
use RoadBunch\Csv\Header\HeaderInterface;
17
18
/**
19
 * Class ArrayToCsvTest
20
 *
21
 * @author  Dan McAdams
22
 * @package RoadBunch\Csv\Tests\Csv
23
 */
24
class ArrayToCsvTest extends TestCase
25
{
26
    public function testAddDataSet()
27
    {
28
        // empty array
29
        $data = [];
30
        $csv = new ArrayToCsvSpy($data);
31
        $this->assertEquals($data, $csv->getRawData());
32
33
        // no string indexes
34
        $data = [['dan', 'mcadams',],['john','doe'],['lara','johnson']];
35
        $csv = new ArrayToCsvSpy($data);
36
        $this->assertEquals($data, $csv->getRawData());
37
38
        // named indexes
39
        $data = $this->getSampleCsvData();
40
        $csv = new ArrayToCsvSpy($data);
41
        $this->assertEquals($data, $csv->getRawData());
42
    }
43
44
    public function testSetHeaderFromIndexesNotTwoDimensionalArrayThrowInvalidArgumentException()
45
    {
46
        $this->expectException(\InvalidArgumentException::class);
47
        $data = ['dan', 'mcadams', 'invalid', 'array'];
48
49
        $csv = new ArrayToCsvSpy($data);
50
        $csv->setHeaderFromIndexes();
51
    }
52
53
    public function testSetHeaderFromIndexesEmptyArray()
54
    {
55
        $data = [];
56
57
        $csv = new ArrayToCsvSpy($data);
58
        $csv->setHeaderFromIndexes();
59
        $this->assertInstanceOf(HeaderInterface::class, $csv->getHeader());
60
        $this->assertEquals([], $csv->getHeader()->getColumns());
61
    }
62
63
    public function testSetHeaderFromIndexes()
64
    {
65
        $data = $this->getSampleCsvData();
66
67
        $csv = new ArrayToCsvSpy($data);
68
        $csv->setHeaderFromIndexes();
69
70
        $this->assertInstanceOf(HeaderInterface::class, $csv->getHeader());
71
        $this->assertEquals(array_keys($data[0]), $csv->getHeader()->getColumns());
72
    }
73
74
    public function getSampleCsvData(): array
75
    {
76
        $data = [
77
            ['first_name' => 'John', 'last_name' => 'Doe', 'employee_id' => '742617000027'],
78
            ['first_name' => 'Jane', 'last_name' => 'Jackson', 'employee_id' => '0003645'],
79
            ['first_name' => 'Dede', 'last_name' => 'Gore', 'employee_id' => 'OMG12324']
80
        ];
81
        return $data;
82
    }
83
}
84