Use doctrine in integration tests
[MAILPOET-2219]
This commit is contained in:
@ -124,7 +124,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class);
|
$container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class);
|
||||||
// Features
|
// Features
|
||||||
$container->autowire(\MailPoet\Features\FeaturesController::class);
|
$container->autowire(\MailPoet\Features\FeaturesController::class);
|
||||||
$container->autowire(\MailPoet\Features\FeatureFlagsController::class);
|
$container->autowire(\MailPoet\Features\FeatureFlagsController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Features\FeatureFlagsRepository::class);
|
$container->autowire(\MailPoet\Features\FeatureFlagsRepository::class);
|
||||||
// Form
|
// Form
|
||||||
$container->autowire(\MailPoet\Form\Util\FieldNameObfuscator::class)->setPublic(true);
|
$container->autowire(\MailPoet\Form\Util\FieldNameObfuscator::class)->setPublic(true);
|
||||||
|
@ -22,14 +22,14 @@ class FeatureFlagEntity {
|
|||||||
private $name;
|
private $name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Column(type="smallint", options={"unsigned":true}, nullable=true)
|
* @Column(type="boolean", nullable=true)
|
||||||
* @var integer|null
|
* @var bool|null
|
||||||
*/
|
*/
|
||||||
private $value;
|
private $value;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param integer|null $value
|
* @param bool|null $value
|
||||||
*/
|
*/
|
||||||
public function __construct($name, $value = null) {
|
public function __construct($name, $value = null) {
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
@ -46,12 +46,12 @@ class FeatureFlagEntity {
|
|||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return integer|null */
|
/** @return bool|null */
|
||||||
public function getValue() {
|
public function getValue() {
|
||||||
return $this->value;
|
return $this->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param integer|null $value */
|
/** @param bool|null $value */
|
||||||
public function setValue($value) {
|
public function setValue($value) {
|
||||||
$this->value = $value;
|
$this->value = $value;
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,26 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Test\API\JSON\v1;
|
namespace MailPoet\Test\API\JSON\v1;
|
||||||
|
|
||||||
|
use Codeception\Stub;
|
||||||
use MailPoet\API\JSON\Error as APIError;
|
use MailPoet\API\JSON\Error as APIError;
|
||||||
use MailPoet\API\JSON\Response as APIResponse;
|
use MailPoet\API\JSON\Response as APIResponse;
|
||||||
use MailPoet\API\JSON\v1\FeatureFlags;
|
use MailPoet\API\JSON\v1\FeatureFlags;
|
||||||
|
use MailPoet\Entities\FeatureFlagEntity;
|
||||||
use MailPoet\Features\FeatureFlagsController;
|
use MailPoet\Features\FeatureFlagsController;
|
||||||
|
use MailPoet\Features\FeatureFlagsRepository;
|
||||||
use MailPoet\Features\FeaturesController;
|
use MailPoet\Features\FeaturesController;
|
||||||
use MailPoet\Models\FeatureFlag;
|
use MailPoet\Models\FeatureFlag;
|
||||||
|
|
||||||
class FeatureFlagsTest extends \MailPoetTest {
|
class FeatureFlagsTest extends \MailPoetTest {
|
||||||
|
|
||||||
|
/** @var FeatureFlagsRepository */
|
||||||
|
private $repository;
|
||||||
|
|
||||||
function _before() {
|
function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
FeatureFlag::deleteMany();
|
$this->repository = $this->di_container->get(FeatureFlagsRepository::class);
|
||||||
|
$table_name = $this->entity_manager->getClassMetadata(FeatureFlagEntity::class)->getTableName();
|
||||||
|
$this->entity_manager->getConnection()->executeUpdate("TRUNCATE $table_name");
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItReturnsDefaults() {
|
function testItReturnsDefaults() {
|
||||||
@ -36,7 +44,7 @@ class FeatureFlagsTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testItReturnsDatabaseValue() {
|
function testItReturnsDatabaseValue() {
|
||||||
FeatureFlag::createOrUpdate([
|
$this->repository->createOrUpdate([
|
||||||
'name' => 'feature-a',
|
'name' => 'feature-a',
|
||||||
'value' => false,
|
'value' => false,
|
||||||
]);
|
]);
|
||||||
@ -63,15 +71,16 @@ class FeatureFlagsTest extends \MailPoetTest {
|
|||||||
'feature-a' => false,
|
'feature-a' => false,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$features = FeatureFlag::where('name', 'feature-a')->findMany();
|
$this->entity_manager->clear();
|
||||||
expect(count($features))->equals(1);
|
$features = $this->repository->findBy(['name' => 'feature-a']);
|
||||||
expect($features[0]->name)->equals('feature-a');
|
expect($features)->count(1);
|
||||||
expect($features[0]->value)->equals('0');
|
expect($features[0]->getName())->equals('feature-a');
|
||||||
|
expect($features[0]->getValue())->equals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function testItUpdatesDatabaseValue() {
|
function testItUpdatesDatabaseValue() {
|
||||||
FeatureFlag::createOrUpdate([
|
$this->repository->createOrUpdate([
|
||||||
'name' => 'feature-a',
|
'name' => 'feature-a',
|
||||||
'value' => false,
|
'value' => false,
|
||||||
]);
|
]);
|
||||||
@ -84,14 +93,15 @@ class FeatureFlagsTest extends \MailPoetTest {
|
|||||||
'feature-a' => true,
|
'feature-a' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$features = FeatureFlag::where('name', 'feature-a')->findMany();
|
$this->entity_manager->clear();
|
||||||
|
$features = $this->repository->findBy(['name' => 'feature-a']);
|
||||||
expect(count($features))->equals(1);
|
expect(count($features))->equals(1);
|
||||||
expect($features[0]->name)->equals('feature-a');
|
expect($features[0]->getName())->equals('feature-a');
|
||||||
expect($features[0]->value)->equals('1');
|
expect($features[0]->getValue())->equals(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDoesNotReturnUnknownFlag() {
|
function testItDoesNotReturnUnknownFlag() {
|
||||||
FeatureFlag::createOrUpdate([
|
$this->repository->createOrUpdate([
|
||||||
'name' => 'feature-unknown',
|
'name' => 'feature-unknown',
|
||||||
'value' => true,
|
'value' => true,
|
||||||
]);
|
]);
|
||||||
@ -109,20 +119,20 @@ class FeatureFlagsTest extends \MailPoetTest {
|
|||||||
expect($response->errors[0]['error'])->equals(APIError::BAD_REQUEST);
|
expect($response->errors[0]['error'])->equals(APIError::BAD_REQUEST);
|
||||||
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
|
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
|
||||||
|
|
||||||
$features = FeatureFlag::findMany();
|
$features = $this->repository->findAll();
|
||||||
expect(count($features))->equals(0);
|
expect(count($features))->equals(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return FeatureFlags */
|
||||||
private function createEndpointWithFeatureDefaults(array $defaults) {
|
private function createEndpointWithFeatureDefaults(array $defaults) {
|
||||||
$features_controller = $this->make(FeaturesController::class, [
|
$features_controller = $this->make(FeaturesController::class, [
|
||||||
'defaults' => $defaults,
|
'defaults' => $defaults,
|
||||||
]);
|
]);
|
||||||
$controller = new FeatureFlagsController($features_controller);
|
$feature_flags = Stub::make(FeatureFlagsController::class, [
|
||||||
return new FeatureFlags($features_controller, $controller);
|
'features_controller' => $features_controller,
|
||||||
|
'feature_flags_repository' => $this->di_container->get(FeatureFlagsRepository::class),
|
||||||
|
]);
|
||||||
|
return new FeatureFlags($features_controller, $feature_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
function _after() {
|
|
||||||
parent::_before();
|
|
||||||
FeatureFlag::deleteMany();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user