Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Mrowa96/query-filter
1 result
Show changes
Commits on Source (1)
.idea
/vendor/
/bin/.phpunit
......@@ -15,6 +15,11 @@ abstract class AbstractFilter
*/
protected $value;
/**
* @var string|null
*/
protected $originalValue;
/**
* @var bool
*/
......@@ -36,7 +41,7 @@ abstract class AbstractFilter
*/
public function getValue(): ?string
{
return trim($this->value);
return $this->value;
}
/**
......@@ -44,7 +49,11 @@ abstract class AbstractFilter
*/
public function setValue(string $value): void
{
$this->value = $value;
$this->originalValue = $value;
if (strlen(trim($value)) > 0) {
$this->value = trim($value);
}
}
/**
......@@ -55,6 +64,14 @@ abstract class AbstractFilter
return !empty($this->getValue());
}
/**
* @return string|null
*/
public function getOriginalValue(): ?string
{
return $this->originalValue;
}
/**
* @return void
*/
......
<?php
namespace QueryFilter\Tests\Filter;
use PHPUnit\Framework\TestCase;
use QueryFilter\Filter\AbstractFilter;
/**
* Class AbstractFilterTest
* @package QueryFilter\Tests\Filter
*/
class AbstractFilterTest extends TestCase
{
/**
* @var AbstractFilter
*/
private $filter;
public function setUp()
{
$this->filter = $this->getMockForAbstractClass(AbstractFilter::class);
$this->filter->expects($this->any())
->method('getName')
->will($this->returnValue('test'));
}
public function testSetValueMethodWithCorrectValue()
{
$this->filter->setValue(' value ');
$this->assertEquals('value', $this->filter->getValue());
$this->assertEquals(' value ', $this->filter->getOriginalValue());
$this->assertTrue($this->filter->hasValue());
}
public function testSetValueMethodWithIncorrectValue()
{
$this->filter->setValue(' ');
$this->assertEquals(null, $this->filter->getValue());
$this->assertEquals(' ', $this->filter->getOriginalValue());
$this->assertFalse($this->filter->hasValue());
}
public function testEnableMethod()
{
$this->filter->enable();
$this->assertTrue($this->filter->isEnabled());
}
public function testDisableMethod()
{
$this->filter->disable();
$this->assertFalse($this->filter->isEnabled());
}
public function testCanBeAppliedMethod()
{
$this->filter->enable();
$this->filter->setValue('value');
$this->assertTrue($this->filter->canBeApplied());
}
}
<?php
namespace QueryFilter\Tests\Filter;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\QueryBuilder;
use PHPUnit\Framework\TestCase;
use QueryFilter\Filter\Limit;
/**
* Class LimitTest
* @package QueryFilter\Tests\Filter
*/
class LimitTest extends TestCase
{
/**
* @var Limit
*/
private $filter;
/**
* @var EntityManager
*/
private $entityManager;
public function setUp()
{
$this->entityManager = $this->getMockBuilder(EntityManager::class)
->disableOriginalConstructor()
->getMock();
$this->filter = new Limit();
}
public function testGetName()
{
$this->assertEquals('limit', $this->filter->getName());
}
public function testApplyFilterMethod()
{
$this->filter->setValue(5);
$queryBuilder = $this->getMockBuilder(QueryBuilder::class)
->setMethods(['setMaxResults'])
->disableOriginalConstructor()
->getMock();
$queryBuilder->expects($this->once())
->method('setMaxResults')
->with(5)
->will($this->returnValue($queryBuilder));
$this->filter->applyFilter($queryBuilder);
}
}
<?php
namespace QueryFilter\Tests\Filter;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\QueryBuilder;
use PHPUnit\Framework\TestCase;
use QueryFilter\Filter\Offset;
/**
* Class OffsetTest
* @package QueryFilter\Tests\Filter
*/
class OffsetTest extends TestCase
{
/**
* @var Offset
*/
private $filter;
/**
* @var EntityManager
*/
private $entityManager;
public function setUp()
{
$this->entityManager = $this->getMockBuilder(EntityManager::class)
->disableOriginalConstructor()
->getMock();
$this->filter = new Offset();
}
public function testGetName()
{
$this->assertEquals('offset', $this->filter->getName());
}
public function testApplyFilterMethod()
{
$this->filter->setValue(5);
$queryBuilder = $this->getMockBuilder(QueryBuilder::class)
->setMethods(['setFirstResult'])
->disableOriginalConstructor()
->getMock();
$queryBuilder->expects($this->once())
->method('setFirstResult')
->with(5)
->will($this->returnValue($queryBuilder));
$this->filter->applyFilter($queryBuilder);
}
}
<?php
namespace QueryFilter\Tests\Service;
use PHPUnit\Framework\TestCase;
use QueryFilter\Filter\AbstractFilter;
use QueryFilter\Service\QueryFilterService;
use Symfony\Component\HttpFoundation\ParameterBag;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Class QueryFilterServiceTest
* @package QueryFilter\Tests\Service
*/
class QueryFilterServiceTest extends TestCase
{
/**
* @var QueryFilterService
*/
private $service;
/**
* @var AbstractFilter
*/
private $filter;
public function setUp()
{
$request = $this->createMock(Request::class);
$request->query = $this->createMock(ParameterBag::class);
$request->query->expects($this->any())
->method('get')
->with('test')
->willReturn(5);
$requestStack = $this->createMock(RequestStack::class);
$requestStack->expects($this->any())
->method('getCurrentRequest')
->willReturn($request);
$this->service = new QueryFilterService($requestStack);
$this->filter = $this->getMockForAbstractClass(AbstractFilter::class);
$this->filter->expects($this->any())
->method('getName')
->willReturn('test');
$this->service->registerFilter($this->filter);
}
public function testGetFilterMethodWithCorrectValue()
{
$this->assertTrue($this->service->hasFilter('test'));
$this->assertEquals('test', $this->service->getFilter('test')->getName());
$this->assertEquals(5, $this->service->getFilter('test')->getValue());
}
public function testGetFilterMethodWithIncorrectValue()
{
$this->assertFalse($this->service->hasFilter('testInvalid'));
$this->assertEquals(null, $this->service->getFilter('testInvalid'));
}
public function testEnableFilterMethod()
{
$this->service->enableFilter('test');
$this->assertTrue($this->service->getFilter('test')->isEnabled());
}
public function testDisableFilterMethod()
{
$this->service->disableFilter('test');
$this->assertFalse($this->service->getFilter('test')->isEnabled());
}
}
#!/usr/bin/env php
<?php
if (!file_exists(dirname(__DIR__) . '/vendor/symfony/phpunit-bridge/bin/simple-phpunit')) {
echo "Unable to find the `simple-phpunit` script in `vendor/symfony/phpunit-bridge/bin/`.\n";
exit(1);
}
$classLoader = require dirname(__DIR__) . '/vendor/autoload.php';
if (false === getenv('SYMFONY_PHPUNIT_REMOVE')) {
putenv('SYMFONY_PHPUNIT_REMOVE=');
}
if (false === getenv('SYMFONY_PHPUNIT_DIR')) {
putenv('SYMFONY_PHPUNIT_DIR=' . __DIR__ . '/.phpunit');
}
require dirname(__DIR__) . '/vendor/symfony/phpunit-bridge/bin/simple-phpunit';
......@@ -16,14 +16,21 @@
"symfony/orm-pack": "^1.0",
"symfony/yaml": "^3.4|^4.0"
},
"require-dev": {
"symfony/phpunit-bridge": "^4.1"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"QueryFilter\\": ""
}
},
"autoload-dev": {
"psr-4": {
"QueryFilter\\Tests\\": "tests/"
}
},
"exclude-from-classmap": [
"/Tests/"
]
}
}
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "a9d16274ac169337015d4f83ebfc0bcd",
"content-hash": "6db895101d76c75b9b2691bc2682e1f6",
"packages": [
{
"name": "doctrine/annotations",
......@@ -2874,7 +2874,74 @@
"time": "2018-10-24T07:43:44+00:00"
}
],
"packages-dev": [],
"packages-dev": [
{
"name": "symfony/phpunit-bridge",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "6edaae18c553f7d6c6aeb8babf6bf2633cc2902a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/6edaae18c553f7d6c6aeb8babf6bf2633cc2902a",
"reference": "6edaae18c553f7d6c6aeb8babf6bf2633cc2902a",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"conflict": {
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"suggest": {
"ext-zip": "Zip support is required when using bin/simple-phpunit",
"symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
},
"bin": [
"bin/simple-phpunit"
],
"type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-master": "4.2-dev"
},
"thanks": {
"name": "phpunit/phpunit",
"url": "https://github.com/sebastianbergmann/phpunit"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Bridge\\PhpUnit\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2018-11-11T19:52:12+00:00"
}
],
"aliases": [],
"minimum-stability": "dev",
"stability-flags": [],
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.5/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="vendor/autoload.php"
failOnRisky="true"
failOnWarning="true"
>
<php>
<ini name="error_reporting" value="-1" />
</php>
<testsuites>
<testsuite name="Query Filter Test Suite">
<directory>./Tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./</directory>
<exclude>
<directory>./Tests</directory>
<directory>./vendor</directory>
<directory>./bin</directory>
</exclude>
</whitelist>
</filter>
</phpunit>