wsssoftware/cakephp-datatables

View on GitHub
tests/TestCase/Table/Option/Section/PluginSelectTraitTest.php

Summary

Maintainability
B
4 hrs
Test Coverage
<?php
/**
 * Copyright (c) Allan Carvalho 2020.
 * Under Mit License
 *
 * link: https://github.com/wsssoftware/cakephp-data-renderer
 * author: Allan Carvalho <allan.m.carvalho@outlook.com>
 * license: MIT License https://github.com/wsssoftware/cakephp-datatables/blob/master/LICENSE
 */

namespace DataTables\Test\TestCase\Table\Option\Section;

use Cake\Http\ServerRequest;
use Cake\Routing\Router;
use Cake\TestSuite\TestCase;
use DataTables\Plugin;
use DataTables\Table\Builder;
use InvalidArgumentException;
use TestApp\Application;
use TestApp\DataTables\CategoriesDataTables;

/**
 * Class PluginSelectTraitTest
 * Created by allancarvalho in maio 02, 2020
 */
class PluginSelectTraitTest extends TestCase {

    /**
     * Test subject
     *
     * @var \DataTables\Table\Option\MainOption
     */
    protected $MainOption;

    /**
     * setUp method
     *
     * @return void
     */
    public function setUp(): void {
        parent::setUp();
        $plugin = new Plugin();
        $plugin->bootstrap(new Application(''));
        $plugin->routes(Router::createRouteBuilder(''));
        Router::setRequest(new ServerRequest());
        $configBundle = Builder::getInstance()->getConfigBundle(CategoriesDataTables::class);
        $this->MainOption = $configBundle->Options;
    }

    /**
     * tearDown method
     *
     * @return void
     */
    public function tearDown(): void {
        unset($this->MainOption);

        parent::tearDown();
    }

    /**
     * @return void
     */
    public function testSetPluginSelectLanguageColumns() {
        $this->MainOption->setPluginSelectLanguageColumns('abc');
        $this->assertEquals('abc', $this->MainOption->getPluginSelectLanguageColumns());
        $this->MainOption->setPluginSelectLanguageColumns(['_' => 'abc']);
        $this->assertEquals(['_' => 'abc'], $this->MainOption->getPluginSelectLanguageColumns());
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectLanguageColumns(['abc' => 'abc']);
    }

    /**
     * @return void
     */
    public function testSetPluginSelectLanguageColumnsInvalidType() {
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectLanguageColumns(true);
    }

    /**
     * @return void
     */
    public function testSetPluginSelectItems() {
        $this->MainOption->setPluginSelectItems('row');
        $this->assertEquals('row', $this->MainOption->getPluginSelectItems());
        $this->MainOption->setPluginSelectItems('column');
        $this->assertEquals('column', $this->MainOption->getPluginSelectItems());
        $this->MainOption->setPluginSelectItems('cell');
        $this->assertEquals('cell', $this->MainOption->getPluginSelectItems());
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectItems('abc');
    }

    /**
     * @return void
     */
    public function testSetPluginSelectInfo() {
        $this->MainOption->setPluginSelectInfo(true);
        $this->assertTrue($this->MainOption->isPluginSelectInfo());
        $this->MainOption->setPluginSelectInfo(false);
        $this->assertFalse($this->MainOption->isPluginSelectInfo());
    }

    /**
     * @return void
     */
    public function testSetPluginSelectClassName() {
        $this->MainOption->setPluginSelectClassName('abc');
        $this->assertEquals('abc', $this->MainOption->getPluginSelectClassName());
    }

    /**
     * @return void
     */
    public function testSetPluginSelectLanguageRows() {
        $this->MainOption->setPluginSelectLanguageRows('abc');
        $this->assertEquals('abc', $this->MainOption->getPluginSelectLanguageRows());
        $this->MainOption->setPluginSelectLanguageRows(['_' => 'abc']);
        $this->assertEquals(['_' => 'abc'], $this->MainOption->getPluginSelectLanguageRows());
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectLanguageRows(['abc' => 'abc']);
    }

    /**
     * @return void
     */
    public function testSetPluginSelectLanguageRowsInvalidType() {
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectLanguageRows(true);
    }

    /**
     * @return void
     */
    public function testSetPluginSelectBlurable() {
        $this->MainOption->setPluginSelectBlurable(true);
        $this->assertTrue($this->MainOption->isPluginSelectBlurable());
        $this->MainOption->setPluginSelectBlurable(false);
        $this->assertFalse($this->MainOption->isPluginSelectBlurable());
    }

    /**
     * @return void
     */
    public function testSetPluginSelectToggleable() {
        $this->MainOption->setPluginSelectToggleable(true);
        $this->assertTrue($this->MainOption->isPluginSelectToggleable());
        $this->MainOption->setPluginSelectToggleable(false);
        $this->assertFalse($this->MainOption->isPluginSelectToggleable());
    }

    /**
     * @return void
     */
    public function testSetPluginSelectEnabled() {
        $this->MainOption->setPluginSelectEnabled(true);
        $this->assertTrue($this->MainOption->isPluginSelectEnabled());
        $this->MainOption->setPluginSelectEnabled(false);
        $this->assertFalse($this->MainOption->isPluginSelectEnabled());
        $this->MainOption->setPluginSelectBlurable(true);
        $this->assertTrue($this->MainOption->isPluginSelectEnabled());
    }

    /**
     * @return void
     */
    public function testSetPluginSelectStyle() {
        $this->MainOption->setPluginSelectStyle('api');
        $this->assertEquals('api', $this->MainOption->getPluginSelectStyle());
        $this->MainOption->setPluginSelectStyle('single');
        $this->assertEquals('single', $this->MainOption->getPluginSelectStyle());
        $this->MainOption->setPluginSelectStyle('multi');
        $this->assertEquals('multi', $this->MainOption->getPluginSelectStyle());
        $this->MainOption->setPluginSelectStyle('os');
        $this->assertEquals('os', $this->MainOption->getPluginSelectStyle());
        $this->MainOption->setPluginSelectStyle('multi+shift');
        $this->assertEquals('multi+shift', $this->MainOption->getPluginSelectStyle());
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectStyle('abc');
    }

    /**
     * @return void
     */
    public function testSetPluginSelectLanguageCells() {
        $this->MainOption->setPluginSelectLanguageCells('abc');
        $this->assertEquals('abc', $this->MainOption->getPluginSelectLanguageCells());
        $this->MainOption->setPluginSelectLanguageCells(['_' => 'abc']);
        $this->assertEquals(['_' => 'abc'], $this->MainOption->getPluginSelectLanguageCells());
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectLanguageCells(['abc' => 'abc']);
    }

    /**
     * @return void
     */
    public function testSetPluginSelectLanguageCellsInvalidType() {
        $this->expectException(InvalidArgumentException::class);
        $this->MainOption->setPluginSelectLanguageCells(true);
    }

    /**
     * @return void
     */
    public function testSetPluginSelectSelector() {
        $this->MainOption->setPluginSelectSelector('abc');
        $this->assertEquals('abc', $this->MainOption->getPluginSelectSelector());
    }

}