Completed
Push — master ( 0e25a2...ed48d3 )
by Daniel
02:15
created

JobIteratorTest   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 85
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 10
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 85
rs 10

10 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 14 1
A testConstructionWithJobCollection() 0 4 1
A testCurrentGetsFirstJobOnFirstMethodCall() 0 6 1
A testNextAdvancesPositionCursor() 0 5 1
A testCurrentGetsSecondJobAfterCallingNextMethod() 0 7 1
A testKeyReturnsExpectedPosition() 0 6 1
A testValidReturnsTrueWhilePositionLessOrEqualJobCount() 0 6 1
A testValidReturnsFalseWhenPositionGreaterThanJobCount() 0 7 1
A testRewindMovesPositionCursorToFirstPosition() 0 8 1
A testCountReturnsCorrectJobCollectionSize() 0 5 1
1
<?php
2
3
namespace Jobles\Tests\Core\Job;
4
5
use Jobles\Core\Job\Job;
6
use Jobles\Core\Job\JobCollection;
7
use Jobles\Core\Job\JobIterator;
8
9
class JobIteratorTest extends \PHPUnit_Framework_TestCase
10
{
11
    /**
12
     * @var JobIterator
13
     */
14
    private $iterator;
15
16
    public function setUp()
17
    {
18
        $jobCollection = new JobCollection;
19
20
        $job = new Job;
21
        $job->setTitle('Job 1');
22
        $jobCollection->addJob($job);
23
24
        $job = new Job;
25
        $job->setTitle('Job 2');
26
        $jobCollection->addJob($job);
27
28
        $this->iterator = new JobIterator($jobCollection);
29
    }
30
31
    public function testConstructionWithJobCollection()
32
    {
33
        $this->assertAttributeInstanceOf(JobCollection::class, 'jobs', $this->iterator);
34
    }
35
36
    public function testCurrentGetsFirstJobOnFirstMethodCall()
37
    {
38
        $job = $this->iterator->current();
39
        $this->assertInstanceOf(Job::class, $job);
40
        $this->assertEquals('Job 1', $job->getTitle());
41
    }
42
43
    public function testNextAdvancesPositionCursor()
44
    {
45
        $this->iterator->next();
46
        $this->assertAttributeEquals(1, 'position', $this->iterator);
47
    }
48
49
    public function testCurrentGetsSecondJobAfterCallingNextMethod()
50
    {
51
        $this->iterator->next();
52
        $job = $this->iterator->current();
53
        $this->assertInstanceOf(Job::class, $job);
54
        $this->assertEquals('Job 2', $job->getTitle());
55
    }
56
57
    public function testKeyReturnsExpectedPosition()
58
    {
59
        $this->assertAttributeEquals(0, 'position', $this->iterator);
60
        $this->iterator->next();
61
        $this->assertAttributeEquals(1, 'position', $this->iterator);
62
    }
63
64
    public function testValidReturnsTrueWhilePositionLessOrEqualJobCount()
65
    {
66
        $this->assertTrue($this->iterator->valid());
67
        $this->iterator->next();
68
        $this->assertTrue($this->iterator->valid());
69
    }
70
71
    public function testValidReturnsFalseWhenPositionGreaterThanJobCount()
72
    {
73
        $this->iterator->next();
74
        $this->iterator->next();
75
        $this->iterator->next();
76
        $this->assertFalse($this->iterator->valid());
77
    }
78
79
    public function testRewindMovesPositionCursorToFirstPosition()
80
    {
81
        $this->iterator->next();
82
        $this->assertNotEquals(0, $this->iterator->key());
83
84
        $this->iterator->rewind();
85
        $this->assertEquals(0, $this->iterator->key());
86
    }
87
88
    public function testCountReturnsCorrectJobCollectionSize()
89
    {
90
        $this->assertEquals(2, $this->iterator->count());
91
        $this->assertCount(2, $this->iterator);
92
    }
93
}
94