testWriteItemWithDefaultObjectFactory()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.8333
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
namespace Mathielen\DataImport\Writer;
3
4
use Mathielen\DataImport\Writer\ObjectWriter\ObjectFactoryInterface;
5
6
class ServiceWriterTest extends \PHPUnit_Framework_TestCase
7
{
8
9
    private $written;
10
11
    public function testWriteItem()
12
    {
13
        $writer = new ServiceWriter(array($this, 'write'));
14
15
        $item = array('field1' => 'a', 'field2'=>'b');
16
        $writer->writeItem($item);
17
18
        $this->assertEquals(array($item), $this->written);
19
    }
20
21
    public function testWriteItemWithDefaultObjectFactory()
22
    {
23
        $writer = new ServiceWriter(array($this, 'write'), 'Mathielen\DataImport\Writer\MyClass');
24
25
        $item = array('field1' => 'a', 'field2'=>'b');
26
        $writer->writeItem($item);
27
28
        $expectedObject = new MyClass();
29
        $expectedObject->field1 = 'a';
30
        $expectedObject->field2 = 'b';
31
32
        $this->assertEquals(array($expectedObject), $this->written);
33
    }
34
35
    public function testWriteItemWithCustomObjectFactory()
36
    {
37
        $writer = new ServiceWriter(array($this, 'write'), new MyObjectfactory());
38
39
        $item = array('field1' => 'a', 'field2'=>'b');
40
        $writer->writeItem($item);
41
42
        $this->assertEquals(array(array('field1' => 'a', 'field2'=>'b', 'refactored'=>true)), $this->written);
43
    }
44
45
    public function write($item)
46
    {
47
        $this->written[] = $item;
48
    }
49
50
}
51
52
class MyClass
53
{
54
55
    public $field1;
56
    public $field2;
57
58
}
59
60
class MyObjectfactory implements ObjectFactoryInterface
61
{
62
63
    public function factor(array $item)
64
    {
65
        $item['refactored'] = true;
66
67
        return $item;
68
    }
69
70
}
71