-
Josh Pollock authoredJosh Pollock authored
HasFactories.php 2.89 KiB
<?php
namespace calderawp\CalderaFormsQuery\Tests\Traits;
use calderawp\CalderaContainers\Service\Container;
use calderawp\CalderaFormsQuery\DeleteQueries;
use calderawp\CalderaFormsQuery\Features\FeatureContainer;
use calderawp\CalderaFormsQuery\SelectQueries;
use calderawp\CalderaFormsQuery\Tests\Unit\Features\QueriesTest;
trait HasFactories
{
/**
* @return \calderawp\CalderaFormsQuery\Select\Entry
*/
protected function entryGeneratorFactory()
{
return new \calderawp\CalderaFormsQuery\Select\Entry(
$this->mySqlBuilderFactory(),
$this->entryTableName()
);
}
/**
* @return \calderawp\CalderaFormsQuery\Delete\Entry
*/
protected function entryDeleteGeneratorFactory()
{
return new \calderawp\CalderaFormsQuery\Delete\Entry(
$this->mySqlBuilderFactory(),
$this->entryTableName()
);
}
/**
* @return \calderawp\CalderaFormsQuery\Select\EntryValues
*/
protected function entryValuesGeneratorFactory()
{
return new \calderawp\CalderaFormsQuery\Select\EntryValues(
$this->mySqlBuilderFactory(),
$this->entryValueTableName()
);
}
/**
* @return \calderawp\CalderaFormsQuery\Delete\EntryValues
*/
protected function entryValuesDeleteGeneratorFactory()
{
return new \calderawp\CalderaFormsQuery\Delete\EntryValues(
$this->mySqlBuilderFactory(),
$this->entryValueTableName()
);
}
/**
* @return \calderawp\CalderaFormsQuery\MySqlBuilder
*/
protected function mySqlBuilderFactory()
{
return new \calderawp\CalderaFormsQuery\MySqlBuilder();
}
/**
* @return SelectQueries
*/
protected function selectQueriesFactory()
{
return new SelectQueries(
$this->entryGeneratorFactory(),
$this->entryValuesGeneratorFactory(),
$this->getWPDB()
);
}
/**
* @return DeleteQueries
*/
protected function deleteQueriesFactory()
{
return new DeleteQueries(
$this->entryDeleteGeneratorFactory(),
$this->entryValuesDeleteGeneratorFactory(),
$this->getWPDB()
);
}
/**
* @return \calderawp\CalderaFormsQuery\Features\Queries
*/
protected function featureQueriesFactory()
{
return new \calderawp\CalderaFormsQuery\Features\Queries(
$this->selectQueriesFactory(),
$this->deleteQueriesFactory()
);
}
/**
* @return FeatureContainer
*/
protected function containerFactory()
{
return new FeatureContainer(
new Container(),
$this->getWPDB()
);
}
/**
* Gets a WPDB instance
*
* @return \wpdb
*/
protected function getWPDB()
{
global $wpdb;
if (! class_exists('\WP_User')) {
include_once dirname(dirname(__FILE__)) . '/Mock/wpdb.php';
}
if (! $wpdb) {
$wpdb = new \wpdb('', '', '', '');
}
return $wpdb;
}
/**
* @return string
*/
protected function entryValueTableName(): string
{
return "{$this->getWPDB()->prefix}cf_form_entry_values";
}
/**
* @return string
*/
protected function entryTableName(): string
{
return "{$this->getWPDB()->prefix}cf_form_entries";
}
}