<?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' ); } }