DoctrineReaderTest::testIterate()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 0
1
<?php
2
3
namespace Ddeboer\DataImport\Tests\Reader;
4
5
use Ddeboer\DataImport\Reader\DoctrineReader;
6
use Doctrine\ORM\EntityManager;
7
use Doctrine\ORM\Tools\Setup;
8
use Ddeboer\DataImport\Tests\Fixtures\Entity\User;
9
10
class DoctrineReaderTest extends \PHPUnit_Framework_TestCase
11
{
12
    public function testGetFields()
13
    {
14
        $fields = $this->getReader()->getFields();
15
        $this->assertInternalType('array', $fields);
16
        $this->assertEquals(array('id', 'username'), $fields);
17
    }
18
19
    public function testCount()
20
    {
21
        $this->assertEquals(100, $this->getReader()->count());
22
    }
23
24
    public function testIterate()
25
    {
26
        $i = 1;
27
        foreach ($this->getReader() as $data) {
28
            $this->assertInternalType('array', $data);
29
            $this->assertEquals('user' . $i, $data['username']);
30
            $i++;
31
        }
32
    }
33
34
    protected function getReader()
35
    {
36
        $em = $this->getEntityManager();
37
38
        for ($i = 1; $i <= 100; $i++) {
39
            $user = new User();
40
            $user->setUsername('user'. $i);
41
            $em->persist($user);
42
        }
43
44
        $em->flush();
45
46
        return new DoctrineReader($em, 'Ddeboer\DataImport\Tests\Fixtures\Entity\User');
47
    }
48
49
    protected function getEntityManager()
50
    {
51
        $dbParams = array(
52
            'driver'   => 'pdo_sqlite',
53
        );
54
55
        $paths = array(
56
            __DIR__.'/../Fixtures/Entity'
57
        );
58
59
        $config = Setup::createAnnotationMetadataConfiguration($paths, true);
60
        $em = EntityManager::create($dbParams, $config);
61
62
        $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($em);
63
        $schemaTool->createSchema(
64
            array(
65
                $em->getMetadataFactory()->getMetadataFor('Ddeboer\DataImport\Tests\Fixtures\Entity\User')
66
            )
67
        );
68
69
        return $em;
70
    }
71
}
72