open-orchestra/open-orchestra-mongo-libs

View on GitHub
Pagination/Tests/MongoTrait/FilterTypeStrategy/Strategies/BooleanFilterStrategyTest.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\Pagination\Tests\MongoTrait\FilterTypeStrategy\Strategies;

use OpenOrchestra\Pagination\MongoTrait\FilterTypeStrategy\Strategies\BooleanFilterStrategy;

/**
 * Class BooleanFilterStrategyTest
 */
class BooleanTestFilterStrategy extends AbstractTestFilterStrategy
{
    /**
     * @var BooleanFilterStrategy
     */
    protected $strategy;

    public function setUp()
    {
        $this->strategy = new BooleanFilterStrategy();
    }

    /**
     * @param string $type
     * @param bool   $expected
     *
     * @dataProvider provideSupport
     */
    public function testSupport($type, $expected)
    {
        $output = $this->strategy->support($type);
        $this->assertEquals($output, $expected);
    }

    /**
     * @return array
     */
    public function provideSupport()
    {
        return array(
            array('boolean', true),
            array('string', false),
            array('integer', false),
            array('', false),
            array(null, false),
        );
    }

    /**
     * @param string  $value
     * @param boolean $filterValue
     *
     * @dataProvider provideGenerateFilter
     */
    public function testGenerateFilter($value, $filterValue)
    {
        $name = 'fakeName';
        $filter = $this->strategy->generateFilter($name, $value, 'fakeDocumentName');
        $this->assertSame(array($name => $filterValue), $filter);
    }

    /**
     * @return array
     */
    public function provideGenerateFilter()
    {
        return array(
            array('true', true),
            array('false', false),
            array('0', false),
            array('1', true),
        );
    }

    /**
     * @param mixed $value
     *
     * @dataProvider provideWrongValue
     */
    public function testGenerateFilterWithWrongSearch($value)
    {
        $name = 'fakeName';
        $this->assertNull($this->strategy->generateFilter($name, $value, 'fakeDocumentName'));
    }

    /**
     * @return array
     */
    public function provideWrongValue()
    {
        return array(
            array('foo', null),
            array('bar', null),
            array(2, null),
        );
    }

    /**
     * Test get name
     */
    public function testGetName()
    {
        $this->assertEquals($this->strategy->getName(), 'boolean_filter');
    }
}