diff --git a/Tests/Integration/Features/FeatureHelperMethodsTest.php b/Tests/Integration/Features/FeatureHelperMethodsTest.php index fbfccd8eda056019ed3a634aacf973c9a4636590..200002a7030de80a7ae454b87c128e7b41077bb4 100644 --- a/Tests/Integration/Features/FeatureHelperMethodsTest.php +++ b/Tests/Integration/Features/FeatureHelperMethodsTest.php @@ -17,6 +17,7 @@ class FeatureHelperMethodsTest extends IntegrationTestCase * @covers FeatureContainer::selectByUserId() * @covers FeatureContainer::collectResults() * @covers FeatureContainer::collectEntryValues() + * @covers FeatureContainer::select() */ public function testByUserId() { @@ -52,6 +53,7 @@ class FeatureHelperMethodsTest extends IntegrationTestCase * Test selecting by a field value such as an email * * @covers FeatureContainer::selectByFieldValue() + * @covers FeatureContainer::select() */ public function testByFieldValue() { @@ -77,4 +79,44 @@ class FeatureHelperMethodsTest extends IntegrationTestCase $this->assertSame( $email,$results[1]['values'][1]->value ); } + + /** + * + * @covers FeatureContainer::deleteByEntryIds() + * @covers FeatureContainer::delete() + */ + public function testDeleteByIds() + { + $container = $this->containerFactory(); + + //Create three entries + $entryIdOne = $this->createEntryWithMockFormAndGetEntryId(); + $entryIdTwo = $this->createEntryWithMockFormAndGetEntryId(); + $entryIdThree = $this->createEntryWithMockFormAndGetEntryId(); + //Delete entry one and three + $container + ->deleteByEntryIds([$entryIdOne,$entryIdThree]); + + //No Entry results for entry One + $entryQueryGenerator = $this->entryGeneratorFactory(); + $entryQueryGenerator->queryByEntryId($entryIdOne); + $sql = $entryQueryGenerator->getPreparedSql(); + $results = $this->queryWithWPDB($sql); + $this->assertSame( 0, count( $results ) ); + + //No Entry Value results for entry One + $entryValuesQueryGenerator = $this->entryValuesGeneratorFactory(); + $entryValuesQueryGenerator->queryByEntryId($entryIdOne); + $sql = $entryValuesQueryGenerator->getPreparedSql(); + $results = $this->queryWithWPDB($sql); + $this->assertSame( 0, count( $results ) ); + + //Results for entry Two + $entryValuesQueryGenerator = $this->entryValuesGeneratorFactory(); + $entryValuesQueryGenerator->queryByEntryId($entryIdTwo); + $sql = $entryValuesQueryGenerator->getPreparedSql(); + $results = $this->queryWithWPDB($sql); + $this->assertTrue( 0 < count( $results ) ); + + } } \ No newline at end of file diff --git a/src/Features/FeatureContainer.php b/src/Features/FeatureContainer.php index 1c37459ca8a61b9807ac6ea16e6948c1cdc0bd09..efb7d1dc423cf11264cb63f51ad283bda5b0b97f 100644 --- a/src/Features/FeatureContainer.php +++ b/src/Features/FeatureContainer.php @@ -169,6 +169,29 @@ class FeatureContainer extends Container return $this->collectResults( $this->select( $queryForValues ) ); } + /** + * Delete all entry data, including field values for a collection of entries + * + * @param array $entryIds Entry Ids to delete + * @return $this + */ + public function deleteByEntryIds(array$entryIds) + { + $this->delete( + $this + ->getQueries() + ->entryDelete() + ->deleteByEntryIds($entryIds) + ); + $this->delete( + $this->getQueries() + ->entryValueDelete() + ->deleteByEntryIds($entryIds) + ); + + return $this; + } + /** * @return string */