Skip to content
Snippets Groups Projects
SelectQueryBuilderTest.php 3.09 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();
		$this->assertEquals( 'wp_cf_form_entries', $entry->getTableName() );

		$entryValues = $this->entryValuesGeneratorFactory();
		$this->assertSame( 'cf_form_entry_values', $entryValues->getTableName() );
	}

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

		$entryValues = $this->entryValuesGeneratorFactory();
		$this->assertTrue( is_a( $entryValues->getBuilder(), MySqlBuilder::class ) );
	}

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

		$entryValues = $this->entryValuesGeneratorFactory();
		$this->assertTrue( is_a( $entryValues->getSelectQuery(), Select::class ) );
	}

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

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

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

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