Skip to content
Snippets Groups Projects
Commit 75906515 authored by Josh Pollock's avatar Josh Pollock
Browse files

make sql builders resetable

parent b439c9f2
No related branches found
No related tags found
No related merge requests found
<?php
namespace calderawp\CalderaFormsQuery\Tests\Integration;
use calderawp\CalderaFormsQuery\EntryQueries;
use calderawp\CalderaFormsQuery\QueriesEntries;
use calderawp\CalderaFormsQuery\Select\EntryValues;
use calderawp\CalderaFormsQuery\Tests\Traits\CanCreateEntryWithEmailField;
use calderawp\CalderaFormsQuery\Tests\Traits\HasFactories;
use calderawp\CalderaFormsQuery\Tests\Traits\UsersMockFormAsDBForm;
class EntryQueriesGeneratorsTest extends IntegrationTestCase
{
use CanCreateEntryWithEmailField;
/**
* Test reset builder allows us to create new queries on generator
*
* @covers QueriesEntries::getEntryValueGenerator()
* @covers EntryValues::resetQuery()
*/
public function testReset()
{
$emailOne = 'one@email.com';
$entryIdOne = $this->createEntryWithEmail($emailOne);
$emailTwo = 'two@email.com';
$entryIdTwo = $this->createEntryWithEmail($emailTwo);
$entryQueries = $this->entryQueriesFactory();
//Email one by email
$results = $entryQueries
->getResults(
$entryQueries
->getEntryValueGenerator()
->queryByFieldValue(
$this->getEmailFieldSlug(),
$emailOne
)
->getPreparedSql()
);
$this->assertSame(1, count($results));
//Email one by entry_id
$results = $entryQueries
->getResults(
$entryQueries
->getEntryValueGenerator()
->queryByEntryId(
$entryIdOne
)
->getPreparedSql()
);
$this->assertSame(1, count($results));
$entryQueries
->getEntryValueGenerator()
->resetQuery();
//Email two by email
$results = $entryQueries
->getResults(
$entryQueries
->getEntryValueGenerator()
->queryByFieldValue(
$this->getEmailFieldSlug(),
$emailTwo
)
->getPreparedSql()
);
$this->assertSame(1, count($results));
//Email two by entry_id
$results = $entryQueries
->getResults(
$entryQueries
->getEntryValueGenerator()
->queryByEntryId(
$entryIdTwo
)
->getPreparedSql()
);
$this->assertSame(1, count($results));
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ namespace calderawp\CalderaFormsQuery\Tests\Integration;
use calderawp\CalderaFormsQuery\EntryQueries;
use calderawp\CalderaFormsQuery\Tests\Traits\CanCreateEntryWithEmailField;
use calderawp\CalderaFormsQuery\Tests\Traits\HasFactories;
use calderawp\CalderaFormsQuery\Tests\Traits\UsersMockFormAsDBForm;
......@@ -58,4 +59,6 @@ class EntryQueriesTest extends IntegrationTestCase
$this->assertTrue( ! empty( $resultsTwo ), var_export( $resultsTwo, true ) );
}
}
\ No newline at end of file
......@@ -110,4 +110,14 @@ class DeleteQueryBuilderTest extends TestCase
$entryGenerator->resetBuilder( $newBuilder );
$this->assertSame( $newBuilder, $entryGenerator->getBuilder( ) );
}
public function testResetOfQuery()
{
$entryGenerator = $this->entryDeleteGeneratorFactory();
$entryGenerator->deleteByUserId(55 );
$entryGenerator->resetQuery();
$entryGenerator->deleteByUserId( 42 );
$this->assertTrue( is_int( strpos( $entryGenerator->getPreparedSql(), '42' ) ) );
$this->assertTrue( ! is_int( strpos( $entryGenerator->getPreparedSql(), '55' ) ) );
}
}
......@@ -45,4 +45,5 @@ class EntryQueriesTest extends TestCase
$queries = $this->entryQueriesFactory();
$this->assertTrue(is_array($queries->getResults("SELECT `roy` FROM sivan WHERE mike = 'roy'")));
}
}
......@@ -39,4 +39,11 @@ interface CreatesSqlQueries
* @return $this
*/
public function resetBuilder( MySqlBuilder $builder = null );
/**
* Reset the query
*
* @return $this
*/
public function resetQuery();
}
......@@ -20,7 +20,7 @@ abstract class DeleteQueryBuilder extends QueryBuilder implements DoesDeleteQuer
public function getDeleteQuery()
{
if (! $this->deleteQuery) {
$this->deleteQuery = new Delete($this->getTableName());
$this->setNewQuery();
}
return $this->deleteQuery;
......@@ -33,4 +33,18 @@ abstract class DeleteQueryBuilder extends QueryBuilder implements DoesDeleteQuer
{
return $this->getDeleteQuery();
}
/** @inheritdoc */
public function resetQuery()
{
$this->setNewQuery();
}
/**
* Set a new delete query
*/
private function setNewQuery()
{
$this->deleteQuery = new Delete($this->getTableName());
}
}
......@@ -23,7 +23,7 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer
{
if (empty($this->selectQuery)) {
$this->selectQuery = new \NilPortugues\Sql\QueryBuilder\Manipulation\Select($this->getTableName());
$this->setNewQuery();
}
return $this->selectQuery;
}
......@@ -49,4 +49,17 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer
}
/** @inheritdoc */
public function resetQuery()
{
$this->setNewQuery();
return $this;
}
private function setNewQuery()
{
$this->selectQuery = new \NilPortugues\Sql\QueryBuilder\Manipulation\Select($this->getTableName());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment