Skip to content

Commit

Permalink
Full code coverage with MSI = 100% (#83)
Browse files Browse the repository at this point in the history
* Full code coverage with MSI = 100%

* Disabling proxying to original method for MongoDB Query

* Implementing missing abstract method in mock
  • Loading branch information
krzysztof-gzocha committed Jul 30, 2016
1 parent 7aa26d9 commit 7c96307
Show file tree
Hide file tree
Showing 10 changed files with 498 additions and 5 deletions.
@@ -1,6 +1,6 @@
<?php

namespace KGzocha\Searcher\FilterImposer\Doctrine;
namespace KGzocha\Searcher\CriteriaBuilder\Doctrine;

use KGzocha\Searcher\Context\Doctrine\ODMBuilderSearchingContext;
use KGzocha\Searcher\Context\SearchingContextInterface;
Expand Down
@@ -1,12 +1,11 @@
<?php

namespace KGzocha\Searcher\Test\Context;
namespace KGzocha\Searcher\Test\Context\Doctrine;

use KGzocha\Searcher\Context\Doctrine\CachedQueryBuilderSearchingContext;

/**
* @author Daniel Ribeiro <drgomesp@gmail.com>
* @package KGzocha\Searcher\Test\Context
*/
class CachedQueryBuilderSearchingContextTest extends \PHPUnit_Framework_TestCase
{
Expand Down
47 changes: 47 additions & 0 deletions tests/Context/Doctrine/ODMBuilderSearchingContextTest.php
@@ -0,0 +1,47 @@
<?php

namespace KGzocha\Searcher\Test\Context\Doctrine;

use KGzocha\Searcher\Context\Doctrine\ODMBuilderSearchingContext;
use KGzocha\Searcher\Test\Context\MongoDBQueryStub;

/**
* @author Krzysztof Gzocha <krzysztof@propertyfinder.ae>
*/
class ODMBuilderSearchingContextTest extends \PHPUnit_Framework_TestCase
{
public function testConstructor()
{
$context = new ODMBuilderSearchingContext($builder = $this->getBuilderMock());

$this->assertEquals($builder, $context->getQueryBuilder());
}

public function testGetResults()
{
$context = new ODMBuilderSearchingContext($this->getBuilderMock(
$results = [1, 2, 3]
));

$this->assertEquals($results, $context->getResults());
}

/**
* @param array $results
* @return \PHPUnit_Framework_MockObject_MockObject
*/
private function getBuilderMock(array $results = [])
{
$mock = $this
->getMockBuilder('\Doctrine\ODM\MongoDB\Query\Builder')
->disableOriginalConstructor()
->getMock();

$mock
->expects($this->any())
->method('getQuery')
->willReturn(new MongoDBQueryStub($results));

return $mock;
}
}
56 changes: 56 additions & 0 deletions tests/Context/Doctrine/QueryBuilderSearchingContextTest.php
@@ -0,0 +1,56 @@
<?php

namespace KGzocha\Searcher\Test\Context\Doctrine;

use Doctrine\ORM\QueryBuilder;
use KGzocha\Searcher\Context\Doctrine\QueryBuilderSearchingContext;
use KGzocha\Searcher\Test\Context\QueryStub;

/**
* @author Krzysztof Gzocha <krzysztof@propertyfinder.ae>
*/
class QueryBuilderSearchingContextTest extends \PHPUnit_Framework_TestCase
{
public function testConstructor()
{
$context = new QueryBuilderSearchingContext(
$queryBuilder = $this->getQueryBuilderMock()
);

$this->assertEquals(
$queryBuilder,
$context->getQueryBuilder()
);
}

public function testResults()
{
$context = new QueryBuilderSearchingContext(
$this->getQueryBuilderMock($results = [1,2,3])
);

$this->assertEquals(
$results,
$context->getResults()
);
}

/**
* @param array $results
* @return \PHPUnit_Framework_MockObject_MockObject|QueryBuilder
*/
private function getQueryBuilderMock(array $results = [])
{
$mock = $this
->getMockBuilder('\Doctrine\ORM\QueryBuilder')
->disableOriginalConstructor()
->getMock();

$mock
->expects($this->any())
->method('getQuery')
->willReturn(new QueryStub($results));

return $mock;
}
}
27 changes: 27 additions & 0 deletions tests/Context/MongoDBQueryStub.php
@@ -0,0 +1,27 @@
<?php

namespace KGzocha\Searcher\Test\Context;

/**
* @author Krzysztof Gzocha <krzysztof@propertyfinder.ae>
*/
class MongoDBQueryStub
{
/**
* @var mixed
*/
private $results;

/**
* @param $results
*/
public function __construct($results = null)
{
$this->results = $results;
}

public function execute()
{
return $this->results;
}
}
16 changes: 14 additions & 2 deletions tests/Context/QueryStub.php
Expand Up @@ -15,10 +15,19 @@
* Stub for making sure that useQueryCache will be called.
*
* @author Daniel Ribeiro <drgomesp@gmail.com>
* @package KGzocha\Searcher\Test\Context
*/
class QueryStub
{
private $results;

/**
* @param $results
*/
public function __construct($results = null)
{
$this->results = $results;
}

/**
* @see \Doctrine\ORM\Query::useQueryCache()
*/
Expand All @@ -27,5 +36,8 @@ public function useQueryCache($bool) {}
/**
* @see \Doctrine\ORM\Query::getResult()
*/
public function getResult() {}
public function getResult()
{
return $this->results;
}
}
62 changes: 62 additions & 0 deletions tests/CriteriaBuilder/Doctrine/AbstractODMCriteriaBuilderTest.php
@@ -0,0 +1,62 @@
<?php

namespace KGzocha\Searcher\Test\CriteriaBuilder\Doctrine;

use KGzocha\Searcher\Context\SearchingContextInterface;
use KGzocha\Searcher\CriteriaBuilder\Doctrine\AbstractODMCriteriaBuilder;

/**
* @author Krzysztof Gzocha <krzysztof@propertyfinder.ae>
*/
class AbstractODMCriteriaBuilderTest extends \PHPUnit_Framework_TestCase
{
/**
* @param SearchingContextInterface $searchingContext
* @param $expected
* @dataProvider supportedContextDataProvider
*/
public function testSupportSearchingContext(
SearchingContextInterface $searchingContext,
$expected
) {
/** @var AbstractODMCriteriaBuilder $criteriaBuilder */
$criteriaBuilder = $this
->getMockBuilder('\KGzocha\Searcher\CriteriaBuilder\Doctrine\AbstractODMCriteriaBuilder')
->getMockForAbstractClass();

$this->assertEquals(
$expected,
$criteriaBuilder->supportsSearchingContext($searchingContext)
);
}

public function supportedContextDataProvider()
{
return [
[$this->getSupportedSearchingContextMock(), true],
[$this->getNotSupportedSearchingContextMock(), false],
];
}

/**
* @return \PHPUnit_Framework_MockObject_MockObject
*/
private function getNotSupportedSearchingContextMock()
{
return $this
->getMockBuilder('\KGzocha\Searcher\Context\SearchingContextInterface')
->disableOriginalConstructor()
->getMock();
}

/**
* @return \PHPUnit_Framework_MockObject_MockObject
*/
private function getSupportedSearchingContextMock()
{
return $this
->getMockBuilder('\KGzocha\Searcher\Context\Doctrine\ODMBuilderSearchingContext')
->disableOriginalConstructor()
->getMock();
}
}

0 comments on commit 7c96307

Please sign in to comment.