Completed
Push — master ( 50808e...33b518 )
by Gianluca
05:07
created

AdapterTestIgnore   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 9
dl 0
loc 76
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 21 1
A testCanSetPaginator() 0 7 1
A testContainedItemsCount() 0 8 1
A testGetsItemsAtOffsetZero() 0 9 2
A testGetsItemsAtOffsetTen() 0 9 2
1
<?php
2
/*
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 *
15
 * This software consists of voluntary contributions made by many individuals
16
 * and is licensed under the MIT license. For more information, see
17
 * <http://www.doctrine-project.org>.
18
 */
19
20
namespace DoctrineORMModuleTest\Paginator;
21
22
use DoctrineORMModuleTest\Framework\TestCase;
23
use DoctrineORMModuleTest\Assets\Fixture\TestFixture;
24
25
use Doctrine\Common\DataFixtures\Loader as FixtureLoader;
26
use Doctrine\Common\DataFixtures\Executor\ORMExecutor;
27
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
28
29
use Doctrine\ORM\QueryBuilder;
30
use Doctrine\ORM\Tools\Pagination\Paginator as DoctrinePaginator;
31
use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator as PaginatorAdapter;
32
33
class AdapterTestIgnore extends TestCase
34
{
35
    /**
36
     * @var QueryBuilder
37
     */
38
    protected $qb;
39
40
    /**
41
     * @var PaginatorAdapter
42
     */
43
    protected $paginatorAdapter;
44
45
    /**
46
     * @var DoctrinePaginator
47
     */
48
    protected $paginator;
49
50
    public function setUp()
51
    {
52
        parent::setUp();
53
54
        $this->createDb();
55
        $loader = new FixtureLoader();
56
        $loader->addFixture(new TestFixture());
57
        $purger = new ORMPurger();
58
        $executor = new ORMExecutor($this->getEntityManager(), $purger);
59
        $executor->execute($loader->getFixtures());
60
61
        $this->qb = $this
62
            ->getEntityManager()
63
            ->createQueryBuilder()
64
            ->select('t')
65
            ->from('DoctrineORMModuleTest\Assets\Entity\Test', 't')
66
            ->orderBy('t.id', 'ASC');
67
68
        $this->paginator = new DoctrinePaginator($this->qb);
69
        $this->paginatorAdapter = new PaginatorAdapter($this->paginator);
70
    }
71
72
    public function testCanSetPaginator()
73
    {
74
        $this->assertSame($this->paginator, $this->paginatorAdapter->getPaginator());
75
        $doctrinePaginator = new DoctrinePaginator($this->getEntityManager()->createQuery(''));
76
        $this->paginatorAdapter->setPaginator($doctrinePaginator);
77
        $this->assertSame($doctrinePaginator, $this->paginatorAdapter->getPaginator());
78
    }
79
80
    public function testContainedItemsCount()
81
    {
82
        $itemsCount = $this->qb->select('COUNT(t)')->getQuery()->getSingleScalarResult();
83
84
        $this->assertEquals($itemsCount, $this->paginatorAdapter->count());
85
        $this->assertEquals($itemsCount, count($this->paginatorAdapter->getItems(0, $itemsCount + 100)));
86
87
    }
88
89
    public function testGetsItemsAtOffsetZero()
90
    {
91
        $expected = $this->qb->setMaxResults(10)->getQuery()->getResult();
92
        $actual = $this->paginatorAdapter->getItems(0, 10);
93
94
        foreach ($expected as $key => $expectedItem) {
95
            $this->assertEquals($expectedItem, $actual[$key]);
96
        }
97
    }
98
99
    public function testGetsItemsAtOffsetTen()
100
    {
101
        $expected = $this->qb->setFirstResult(10)->setMaxResults(10)->getQuery()->getResult();
102
        $actual = $this->paginatorAdapter->getItems(10, 10);
103
104
        foreach ($expected as $key => $expectedItem) {
105
            $this->assertEquals($expectedItem, $actual[$key]);
106
        }
107
    }
108
}
109