Skip to content
Snippets Groups Projects
SelectQueryBuilderTest.php 3.45 KiB
Newer Older
Josh Pollock's avatar
Josh Pollock committed
<?php


namespace calderawp\CalderaFormsQuery\Tests\Unit\Select;

use calderawp\CalderaFormsQuery\MySqlBuilder;
use calderawp\CalderaFormsQuery\Select\Entry;
use calderawp\CalderaFormsQuery\Select\EntryValues;
use calderawp\CalderaFormsQuery\Select\SelectQueryBuilder;
use calderawp\CalderaFormsQuery\Tests\Unit\TestCase;
use NilPortugues\Sql\QueryBuilder\Manipulation\Select;

class SelectQueryBuilderTest extends TestCase
{

	/**
	 * Test table names
	 *
	 * @covers SelectQueryBuilder::getTableName()
	 * @covers SelectQueryBuilder::$tableName
	 */
	public function testGetTableName()
	{
		$entry = $this->entryGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertEquals($this->entryTableName(), $entry->getTableName());
Josh Pollock's avatar
Josh Pollock committed

		$entryValues = $this->entryValuesGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertSame($this->entryValueTableName(), $entryValues->getTableName());
Josh Pollock's avatar
Josh Pollock committed
	}

	/**
	 * Test getting SQL builder
	 *
	 * @covers SelectQueryBuilder::getBuilder()
	 * @covers SelectQueryBuilder::$builder
	 */
	public function testGetBuilder()
	{
		$entry = $this->entryGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertTrue(is_a($entry->getBuilder(), MySqlBuilder::class));
Josh Pollock's avatar
Josh Pollock committed

		$entryValues = $this->entryValuesGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertTrue(is_a($entryValues->getBuilder(), MySqlBuilder::class));
Josh Pollock's avatar
Josh Pollock committed
	}

	/**
	 * Test getting select query generator
	 *
	 * @covers SelectQueryBuilder::getSelectQuery()
Josh Pollock's avatar
Josh Pollock committed
	 * @covers SelectQueryBuilder::$selectQuery
Josh Pollock's avatar
Josh Pollock committed
	 */
	public function testGetSelectQuery()
	{
		$entry = $this->entryGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertTrue(is_a($entry->getSelectQuery(), Select::class));
Josh Pollock's avatar
Josh Pollock committed

		$entryValues = $this->entryValuesGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertTrue(is_a($entryValues->getSelectQuery(), Select::class));
Josh Pollock's avatar
Josh Pollock committed
	}

	/**
	 * Test adding orderby DESC
	 *
	 * @covers SelectQueryBuilder::addOrderBy()
	 */
	public function testAddOrderByDesc()
	{
		$entry = $this->entryGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$expectedSql = "SELECT `{$this->entryTableName()}`.* FROM `{$this->entryTableName()}` WHERE (`{$this->entryTableName()}`.`form_id` = 'cf12345') ORDER BY `{$this->entryTableName()}`.`form_id` DESC";
Josh Pollock's avatar
Josh Pollock committed
		$entry->queryByFormsId('cf12345');
		$entry->addOrderBy('form_id', false);
Josh Pollock's avatar
Josh Pollock committed
		$actualSql = $entry->getPreparedSql();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertEquals($expectedSql, $actualSql);
Josh Pollock's avatar
Josh Pollock committed
	}

	/**
	 * Test adding orderby ASC
	 *
	 * @covers SelectQueryBuilder::addOrderBy()
	 */
	public function testAddOrderByAsc()
	{
		$entry = $this->entryGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$expectedSql = "SELECT `{$this->entryTableName()}`.* FROM `{$this->entryTableName()}` WHERE (`{$this->entryTableName()}`.`form_id` = 'cf12345') ORDER BY `{$this->entryTableName()}`.`form_id` ASC";
Josh Pollock's avatar
Josh Pollock committed
		$entry->queryByFormsId('cf12345');
		$entry->addOrderBy('form_id');
Josh Pollock's avatar
Josh Pollock committed
		$actualSql = $entry->getPreparedSql();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertEquals($expectedSql, $actualSql);
Josh Pollock's avatar
Josh Pollock committed
	}

	/**
	 * Test the ASC constant
	 *
	 * @covers SelectQueryBuilder::ASC
	 */
	public function testAscConstant()
	{
Josh Pollock's avatar
Josh Pollock committed
		$this->assertEquals(Entry::ASC, 'ASC');
		$this->assertEquals(EntryValues::ASC, 'ASC');
Josh Pollock's avatar
Josh Pollock committed
	}

	/**
Josh Pollock's avatar
Josh Pollock committed
	 * Test the DESC constant
Josh Pollock's avatar
Josh Pollock committed
	 *
	 * @covers SelectQueryBuilder::DESC
	 */
	public function testDescConstant()
	{
Josh Pollock's avatar
Josh Pollock committed
		$this->assertEquals(Entry::DESC, 'DESC');
		$this->assertEquals(EntryValues::DESC, 'DESC');
Josh Pollock's avatar
Josh Pollock committed
	}
Josh Pollock's avatar
Josh Pollock committed

	/**
	 * Test reset of builder
	 *
	 * @covers SelectQueryBuilder::resetBuilder()
	 */
	public function testResetOfBuilder()
	{
		$entryGenerator = $this->entryGeneratorFactory();
		$newBuilder = new MySqlBuilder();
		$entryGenerator->resetBuilder( $newBuilder );
		$this->assertSame( $newBuilder, $entryGenerator->getBuilder( ) );
	}
Josh Pollock's avatar
Josh Pollock committed
}