Skip to content

Commit

Permalink
Merge pull request #2 from jeyroik/development
Browse files Browse the repository at this point in the history
Change Field pk from Name to Id
  • Loading branch information
jeyroik committed May 19, 2020
2 parents 5c5b8cf + 6f1dfdf commit bee00a4
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 5 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"require": {
"jeyroik/extas-base": "2.*",
"jeyroik/extas-samples": "2.*",
"jeyroik/extas-repositories-get": "0.*"
"jeyroik/extas-repositories-get": "0.*",
"jeyroik/extas-repositories-fields-uuid": "0.*"
},
"require-dev": {
"phpunit/phpunit": "^9",
Expand Down
4 changes: 4 additions & 0 deletions extas.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@
"extas\\components\\plugins\\PluginInstallFieldsTypes"
],
"stage": "extas.install"
},
{
"class": "extas\\components\\plugins\\repositories\\PluginUUidField",
"stage": "extas.fields.create.before"
}
],
"extensions": [
Expand Down
2 changes: 2 additions & 0 deletions src/components/fields/Field.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php
namespace extas\components\fields;

use extas\components\THasId;
use extas\interfaces\fields\IField;
use extas\components\samples\THasSample;

Expand All @@ -13,6 +14,7 @@
class Field extends FieldSample implements IField
{
use THasSample;
use THasId;

/**
* @return string
Expand Down
2 changes: 1 addition & 1 deletion src/components/fields/FieldRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ class FieldRepository extends Repository implements IFieldRepository
{
protected string $scope = 'extas';
protected string $name = 'fields';
protected string $pk = Field::FIELD__NAME;
protected string $pk = Field::FIELD__ID;
protected string $itemClass = Field::class;
}
20 changes: 19 additions & 1 deletion src/components/plugins/PluginInstallFields.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@

use extas\components\fields\Field;
use extas\interfaces\fields\IFieldRepository;
use extas\interfaces\repositories\IRepository;
use Ramsey\Uuid\Uuid;
use Symfony\Component\Console\Output\OutputInterface;

/**
* Class PluginInstallFields
Expand All @@ -15,6 +18,21 @@ class PluginInstallFields extends PluginInstallDefault
protected string $selfSection = 'fields';
protected string $selfName = 'field';
protected string $selfRepositoryClass = IFieldRepository::class;
protected string $selfUID = Field::FIELD__NAME;
protected string $selfUID = Field::FIELD__ID;
protected string $selfItemClass = Field::class;

/**
* @param string $uid
* @param OutputInterface $output
* @param array $item
* @param IRepository $repo
* @param string $method
*/
public function install($uid, $output, $item, $repo, $method = 'create')
{
$uid = $uid ?: '@uuid6';
$item[Field::FIELD__ID] = $uid;

parent::install($uid, $output, $item, $repo, $method);
}
}
3 changes: 2 additions & 1 deletion src/interfaces/fields/IField.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php
namespace extas\interfaces\fields;

use extas\interfaces\IHasId;
use extas\interfaces\samples\IHasSample;

/**
Expand All @@ -9,7 +10,7 @@
* @package extas\interfaces\fields
* @author jeyroik@gmail.com
*/
interface IField extends IFieldSample, IHasSample
interface IField extends IFieldSample, IHasSample, IHasId
{

}
38 changes: 37 additions & 1 deletion tests/FieldTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,18 @@

use extas\components\extensions\TSnuffExtensions;
use extas\components\fields\Field;
use extas\components\fields\FieldRepository;
use extas\components\fields\types\FieldType;
use extas\components\fields\types\FieldTypeRepository;
use extas\components\plugins\Plugin;
use extas\components\plugins\PluginInstallFields;
use extas\components\plugins\PluginRepository;
use extas\components\plugins\repositories\PluginFieldUuid;
use extas\interfaces\fields\IField;
use extas\interfaces\repositories\IRepository;
use PHPUnit\Framework\TestCase;
use Dotenv\Dotenv;
use Symfony\Component\Console\Output\NullOutput;

/**
* Class FieldTest
Expand All @@ -20,22 +27,30 @@ class FieldTest extends TestCase
use TSnuffExtensions;

protected IRepository $typeRepo;
protected IRepository $fieldRepo;
protected IRepository $pluginRepo;

protected function setUp(): void
{
parent::setUp();
$env = Dotenv::create(getcwd() . '/tests/');
$env->load();
$this->typeRepo = new FieldTypeRepository();
$this->fieldRepo = new FieldRepository();
$this->pluginRepo = new PluginRepository();
$this->addReposForExt([
'fieldTypeRepository' => FieldTypeRepository::class
'fieldTypeRepository' => FieldTypeRepository::class,
'fieldRepository' => FieldRepository::class
]);
$this->createRepoExt(['fieldRepository', 'fieldTypeRepository']);
}

protected function tearDown(): void
{
$this->deleteSnuffExtensions();
$this->typeRepo->delete([FieldType::FIELD__NAME => 'string']);
$this->fieldRepo->delete([Field::FIELD__NAME => 'test']);
$this->pluginRepo->delete([Plugin::FIELD__CLASS => PluginFieldUuid::class]);
}

public function testBasicMethods()
Expand All @@ -51,4 +66,25 @@ public function testBasicMethods()
$this->assertNotEmpty($type);
$this->assertEquals('String type', $type->getTitle());
}

public function testPluginInstallField()
{
$this->pluginRepo->create(new Plugin([
Plugin::FIELD__CLASS => PluginFieldUuid::class,
Plugin::FIELD__STAGE => 'extas.fields.create.before'
]));
$plugin = new class extends PluginInstallFields {
protected function installPackageEntity(array $item): void
{

}
};
$plugin->install('', new NullOutput(), ['name' => 'test'], new FieldRepository());
/**
* @var IField $field
*/
$field = $this->fieldRepo->one([Field::FIELD__NAME => 'test']);
$this->assertNotEmpty($field, 'Field is not installed');
$this->assertNotEmpty($field->getId(), 'ID is not uuid, if it is empty');
}
}

0 comments on commit bee00a4

Please sign in to comment.