Skip to content
Snippets Groups Projects
SelectQueryBuilderTest.php 3.05 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('wp_cf_form_entries', $entry->getTableName());
Josh Pollock's avatar
Josh Pollock committed

		$entryValues = $this->entryValuesGeneratorFactory();
Josh Pollock's avatar
Josh Pollock committed
		$this->assertSame('cf_form_entry_values', $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()
	 * @covers SelectQueryBuilder::$query
	 */
	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();
		$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";
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();
		$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";
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
	}

	/**
	 * Test the SDESC constant
	 *
	 * @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
}