Skip to content
Snippets Groups Projects
SelectQueryBuilderTest.php 3.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
    }