diff --git a/Tests/Integration/EntryQueriesGeneratorsTest.php b/Tests/Integration/EntryQueriesGeneratorsTest.php new file mode 100644 index 0000000000000000000000000000000000000000..2f7a464e4c23f143b0fc5c2368906bee478f42ca --- /dev/null +++ b/Tests/Integration/EntryQueriesGeneratorsTest.php @@ -0,0 +1,88 @@ +<?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 diff --git a/Tests/Integration/EntryQueriesTest.php b/Tests/Integration/EntryQueriesTest.php index c31d0dbf8b58c666b0af3bc687067987cbf32cde..50a2f59eb39a6ea0c95a228ba22653d529233b7b 100644 --- a/Tests/Integration/EntryQueriesTest.php +++ b/Tests/Integration/EntryQueriesTest.php @@ -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 diff --git a/Tests/Unit/Delete/DeleteQueryBuilderTest.php b/Tests/Unit/Delete/DeleteQueryBuilderTest.php index be97ae6b07ca0bbd18fae57020419388d7f95721..10db4db1da186121f14fc013f5ad92c48c2bc629 100644 --- a/Tests/Unit/Delete/DeleteQueryBuilderTest.php +++ b/Tests/Unit/Delete/DeleteQueryBuilderTest.php @@ -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' ) ) ); + } } diff --git a/Tests/Unit/EntryQueriesTest.php b/Tests/Unit/EntryQueriesTest.php index b87a1b34ffd82ba99eb09ec8bf54597ddbf75445..0ca9c6f4be05ec61eabe99bde91838e7fabd5175 100644 --- a/Tests/Unit/EntryQueriesTest.php +++ b/Tests/Unit/EntryQueriesTest.php @@ -45,4 +45,5 @@ class EntryQueriesTest extends TestCase $queries = $this->entryQueriesFactory(); $this->assertTrue(is_array($queries->getResults("SELECT `roy` FROM sivan WHERE mike = 'roy'"))); } + } diff --git a/src/CreatesSqlQueries.php b/src/CreatesSqlQueries.php index dde46005eba8754232d13dde7b3885df87488baa..5b8eb833b25fc6fb9fe8aa41bb0602852dd5e1e1 100644 --- a/src/CreatesSqlQueries.php +++ b/src/CreatesSqlQueries.php @@ -39,4 +39,11 @@ interface CreatesSqlQueries * @return $this */ public function resetBuilder( MySqlBuilder $builder = null ); + + /** + * Reset the query + * + * @return $this + */ + public function resetQuery(); } diff --git a/src/Delete/DeleteQueryBuilder.php b/src/Delete/DeleteQueryBuilder.php index f55c08aa1703f1c9e54066a78ea61105f8104880..94bbd5b1f2892f99cfb144746b9bfdd55d9b2294 100644 --- a/src/Delete/DeleteQueryBuilder.php +++ b/src/Delete/DeleteQueryBuilder.php @@ -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()); + } } diff --git a/src/Select/SelectQueryBuilder.php b/src/Select/SelectQueryBuilder.php index 57891b5984bc8d73ce220e6e4c0de5073a09e368..d2b37f1f26b9bf71e7acbff415057f71a0ff4c41 100644 --- a/src/Select/SelectQueryBuilder.php +++ b/src/Select/SelectQueryBuilder.php @@ -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()); + } + + }