Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add some tests to filters #332

Merged
merged 2 commits into from Nov 20, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 10 additions & 7 deletions tests/Admin/FieldDescriptionTest.php
Expand Up @@ -13,8 +13,11 @@

namespace Sonata\DoctrineMongoDBAdminBundle\Tests\Admin;

use Doctrine\Common\Util\Inflector;
use Doctrine\Common\Inflector\Inflector;
use PHPUnit\Framework\TestCase;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Admin\FieldDescriptionInterface;
use Sonata\DoctrineMongoDBAdminBundle\Admin\FieldDescription;

class FieldDescriptionTest extends TestCase
Expand Down Expand Up @@ -141,7 +144,7 @@ public function testSetNameDoesNotSetFieldNameWhenSetBefore()

public function testGetParent()
{
$adminMock = $this->createMock('Sonata\AdminBundle\Admin\AdminInterface');
$adminMock = $this->createMock(AdminInterface::class);
$field = new FieldDescription();
$field->setParent($adminMock);

Expand All @@ -158,7 +161,7 @@ public function testGetHelp()

public function testGetAdmin()
{
$adminMock = $this->createMock('Sonata\AdminBundle\Admin\AdminInterface');
$adminMock = $this->createMock(AdminInterface::class);
$field = new FieldDescription();
$field->setAdmin($adminMock);

Expand All @@ -167,10 +170,10 @@ public function testGetAdmin()

public function testGetAssociationAdmin()
{
$adminMock = $this->createMock('Sonata\AdminBundle\Admin\AbstractAdmin');
$adminMock = $this->createMock(AbstractAdmin::class);
$adminMock->expects($this->once())
->method('setParentFieldDescription')
->with($this->isInstanceOf('Sonata\AdminBundle\Admin\FieldDescriptionInterface'));
->with($this->isInstanceOf(FieldDescriptionInterface::class));

$field = new FieldDescription();
$field->setAssociationAdmin($adminMock);
Expand All @@ -180,10 +183,10 @@ public function testGetAssociationAdmin()

public function testHasAssociationAdmin()
{
$adminMock = $this->createMock('Sonata\AdminBundle\Admin\AbstractAdmin');
$adminMock = $this->createMock(AbstractAdmin::class);
$adminMock->expects($this->once())
->method('setParentFieldDescription')
->with($this->isInstanceOf('Sonata\AdminBundle\Admin\FieldDescriptionInterface'));
->with($this->isInstanceOf(FieldDescriptionInterface::class));

$field = new FieldDescription();

Expand Down
7 changes: 4 additions & 3 deletions tests/Builder/ListBuilderTest.php
Expand Up @@ -15,6 +15,7 @@

use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Guesser\TypeGuesserInterface;
use Sonata\DoctrineMongoDBAdminBundle\Admin\FieldDescription;
Expand Down Expand Up @@ -50,12 +51,12 @@ class ListBuilderTest extends TestCase

protected function setUp()
{
$this->typeGuesser = $this->prophesize('Sonata\AdminBundle\Guesser\TypeGuesserInterface');
$this->typeGuesser = $this->prophesize(TypeGuesserInterface::class);

$this->modelManager = $this->prophesize('Sonata\DoctrineMongoDBAdminBundle\Model\ModelManager');
$this->modelManager = $this->prophesize(ModelManager::class);
$this->modelManager->hasMetadata(Argument::any())->willReturn(false);

$this->admin = $this->prophesize('Sonata\AdminBundle\Admin\AbstractAdmin');
$this->admin = $this->prophesize(AbstractAdmin::class);
$this->admin->getClass()->willReturn('Foo');
$this->admin->getModelManager()->willReturn($this->modelManager);
$this->admin->addListFieldDescription(Argument::any(), Argument::any())
Expand Down
23 changes: 23 additions & 0 deletions tests/Filter/BooleanFilterTest.php
Expand Up @@ -26,6 +26,11 @@ public function testFilterEmpty()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->never())
->method('field')
;

$filter->filter($builder, 'alias', 'field', null);
$filter->filter($builder, 'alias', 'field', '');
$filter->filter($builder, 'alias', 'field', 'test');
Expand All @@ -44,6 +49,12 @@ public function testFilterNo()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->once())
->method('equals')
->with(false)
;

$filter->filter($builder, 'alias', 'field', ['type' => null, 'value' => BooleanType::TYPE_NO]);

$this->assertTrue($filter->isActive());
Expand All @@ -56,6 +67,12 @@ public function testFilterYes()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->once())
->method('equals')
->with(true)
;

$filter->filter($builder, 'alias', 'field', ['type' => null, 'value' => BooleanType::TYPE_YES]);

$this->assertTrue($filter->isActive());
Expand All @@ -68,6 +85,12 @@ public function testFilterArray()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->once())
->method('in')
->with([false])
;

$filter->filter($builder, 'alias', 'field', ['type' => null, 'value' => [BooleanType::TYPE_NO]]);

$this->assertTrue($filter->isActive());
Expand Down
23 changes: 23 additions & 0 deletions tests/Filter/ChoiceFilterTest.php
Expand Up @@ -26,6 +26,11 @@ public function testFilterEmpty()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->never())
->method('field')
;

$filter->filter($builder, 'alias', 'field', null);
$filter->filter($builder, 'alias', 'field', 'all');
$filter->filter($builder, 'alias', 'field', []);
Expand All @@ -40,6 +45,12 @@ public function testFilterArray()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->once())
->method('in')
->with(['1', '2'])
;

$filter->filter($builder, 'alias', 'field', ['type' => ChoiceType::TYPE_CONTAINS, 'value' => ['1', '2']]);

$this->assertTrue($filter->isActive());
Expand All @@ -52,6 +63,12 @@ public function testFilterScalar()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->once())
->method('equals')
->with('1')
;

$filter->filter($builder, 'alias', 'field', ['type' => ChoiceType::TYPE_CONTAINS, 'value' => '1']);

$this->assertTrue($filter->isActive());
Expand All @@ -64,6 +81,12 @@ public function testFilterZero()

$builder = new ProxyQuery($this->getQueryBuilder());

$builder->getQueryBuilder()
->expects($this->once())
->method('equals')
->with('0')
;

$filter->filter($builder, 'alias', 'field', ['type' => ChoiceType::TYPE_CONTAINS, 'value' => 0]);

$this->assertTrue($filter->isActive());
Expand Down
72 changes: 66 additions & 6 deletions tests/Filter/FilterTest.php
Expand Up @@ -13,8 +13,11 @@

namespace Sonata\DoctrineMongoDBAdminBundle\Tests\Filter;

use Doctrine\ODM\MongoDB\Mapping\ClassMetadata;
use Doctrine\ODM\MongoDB\Query\Builder;
use PHPUnit\Framework\TestCase;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Sonata\DoctrineMongoDBAdminBundle\Datagrid\ProxyQuery;
use Sonata\DoctrineMongoDBAdminBundle\Filter\Filter;
use Symfony\Component\Form\Extension\Core\Type\TextType;

Expand All @@ -30,7 +33,7 @@ class FilterTest_Filter extends Filter
*/
public function filter(ProxyQueryInterface $queryBuilder, $alias, $field, $value)
{
// TODO: Implement filter() method.
$queryBuilder->field($field)->equals($value);
}

public function getDefaultOptions()
Expand All @@ -45,11 +48,6 @@ public function getRenderSettings()
'options' => $this->getFieldOptions(),
]];
}

public function testAssociation(ProxyQueryInterface $queryBuilder, $value)
{
return $this->association($queryBuilder, $value);
}
}

class FilterTest extends TestCase
Expand Down Expand Up @@ -93,4 +91,66 @@ public function testIsActive()
$filter = new FilterTest_Filter();
$this->assertFalse($filter->isActive());
}

public function testUseNameWithParentAssociationMappings(): void
{
$filter = new FilterTest_Filter();
$filter->initialize('field.name', [
'mapping_type' => ClassMetadata::ONE,
'field_name' => 'field_name',
'parent_association_mappings' => [
[
'fieldName' => 'field',
],
], 'field_mapping' => true,
]);

$queryBuilder = $this->createMock(Builder::class);

$builder = new ProxyQuery($queryBuilder);

$queryBuilder
->expects($this->once())
->method('field')
->with('field_name')
->willReturnSelf()
;

$queryBuilder
->expects($this->once())
->method('equals')
->with('foo')
;

$filter->apply($builder, 'foo');
}

public function testUseFieldNameWithoutParentAssociationMappings(): void
{
$filter = new FilterTest_Filter();
$filter->initialize('field_name', [
'mapping_type' => ClassMetadata::ONE,
'field_name' => 'field_name',
'field_mapping' => true,
]);

$queryBuilder = $this->createMock(Builder::class);

$builder = new ProxyQuery($queryBuilder);

$queryBuilder
->expects($this->once())
->method('field')
->with('field_name')
->willReturnSelf()
;

$queryBuilder
->expects($this->once())
->method('equals')
->with('foo')
;

$filter->apply($builder, 'foo');
}
}
18 changes: 9 additions & 9 deletions tests/Filter/FilterWithQueryBuilderTest.php
Expand Up @@ -13,29 +13,29 @@

namespace Sonata\DoctrineMongoDBAdminBundle\Tests\Filter;

use Doctrine\ODM\MongoDB\Query\Builder;
use Doctrine\ODM\MongoDB\Query\Expr;
use PHPUnit\Framework\TestCase;

abstract class FilterWithQueryBuilderTest extends TestCase
{
private $queryBuilder = null;
private $expr = null;
private $queryBuilder;
private $expr;

public function setUp()
{
$this->queryBuilder = $this->createMock('Doctrine\ODM\MongoDB\Query\Builder');
$this->queryBuilder = $this->createMock(Builder::class);
$this->queryBuilder
->expects($this->any())
->method('field')
->willReturnSelf()
->method('field')
->with('field')
->willReturnSelf()
;
$this->expr = $this->createMock('Doctrine\ODM\MongoDB\Query\Expr');
$this->expr = $this->createMock(Expr::class);
$this->expr
->expects($this->any())
->method('field')
->willReturnSelf()
;
$this->queryBuilder
->expects($this->any())
->method('expr')
->willReturn($this->expr)
;
Expand Down