forçando entidades a serem validadas antes de salvar
This commit is contained in:
parent
1eb0dad205
commit
0124e57c07
|
@ -14,22 +14,34 @@ class Entity {
|
|||
* @var \Tainacan\Repositories\Repository
|
||||
*/
|
||||
protected $repository;
|
||||
|
||||
/**
|
||||
* Array of errors, for example, register validations errors
|
||||
* @var array
|
||||
*/
|
||||
private $errors = [];
|
||||
|
||||
/**
|
||||
* The WordPress post_type for store this class if is needed, false otherwise
|
||||
* @var string
|
||||
*/
|
||||
protected static $post_type = false;
|
||||
|
||||
/**
|
||||
* Store the WordPress post object
|
||||
* @var \WP_Post
|
||||
*/
|
||||
public $WP_Post;
|
||||
|
||||
|
||||
/**
|
||||
* Indicates wether an entity was validated, calling the validate() method
|
||||
*
|
||||
* Entities MUST be validated before attempt to save
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
private $validated = false;
|
||||
|
||||
/**
|
||||
* return the value for a mapped property
|
||||
* @param string $prop id of property
|
||||
|
@ -75,6 +87,7 @@ class Entity {
|
|||
* @param mixed $value the value to be setted
|
||||
*/
|
||||
public function set_mapped_property($prop, $value) {
|
||||
$this->set_validated(false);
|
||||
$this->$prop = $value;
|
||||
}
|
||||
|
||||
|
@ -96,6 +109,7 @@ class Entity {
|
|||
$is_valid = false;
|
||||
}
|
||||
|
||||
$this->set_validated($is_valid);
|
||||
return $is_valid;
|
||||
}
|
||||
|
||||
|
@ -158,5 +172,19 @@ class Entity {
|
|||
public function reset_errors() {
|
||||
$this->errors = [];
|
||||
}
|
||||
|
||||
public function get_validated() {
|
||||
return $this->validated;
|
||||
}
|
||||
|
||||
protected function set_validated($value) {
|
||||
$this->validated = $value;
|
||||
}
|
||||
|
||||
protected function set_as_valid() {
|
||||
$this->reset_errors();
|
||||
$this->set_validated(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -146,7 +146,7 @@ class Item_Metadata_Entity extends Entity {
|
|||
return false;
|
||||
}
|
||||
|
||||
$this->reset_errors();
|
||||
$this->set_as_valid();
|
||||
return true;
|
||||
} else {
|
||||
$this->add_error('invalid', $metadata->get_name() . ' is invalid');
|
||||
|
@ -174,7 +174,7 @@ class Item_Metadata_Entity extends Entity {
|
|||
|
||||
// TODO: call fieldType validation
|
||||
//
|
||||
$this->reset_errors();
|
||||
$this->set_as_valid();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -224,7 +224,11 @@ class Log extends Entity {
|
|||
throw new \Exception('msn or new_value is need to log');
|
||||
}
|
||||
global $Tainacan_Logs;
|
||||
return $Tainacan_Logs->insert($log);
|
||||
if ($log->validate()) {
|
||||
return $Tainacan_Logs->insert($log);
|
||||
} else {
|
||||
throw new \Exception('Invalid log');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -158,7 +158,7 @@ class Logs extends Repository {
|
|||
foreach ($posts as $post) {
|
||||
$log = new Entities\Log($post);
|
||||
}
|
||||
// TODO: Pegar coleções registradas via código
|
||||
|
||||
return $log;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,10 +25,11 @@ abstract class Repository {
|
|||
*/
|
||||
public function insert($obj) {
|
||||
// validate
|
||||
if (!$obj->validate()){
|
||||
return $obj->get_errors();
|
||||
if (!$obj->get_validated()){
|
||||
throw new \Exception('Entities must be validated before you can save them');
|
||||
// TODO: Throw Warning saying you must validate object before insert()
|
||||
}
|
||||
// TODO: Throw Warning saying you must validate object before insert()
|
||||
|
||||
|
||||
$map = $this->get_map();
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ class Collections extends \WP_UnitTestCase {
|
|||
$x->set_default_order('DESC');
|
||||
|
||||
global $Tainacan_Collections;
|
||||
$x->validate();
|
||||
$col = $Tainacan_Collections->insert($x);
|
||||
|
||||
$this->assertEquals('Tainacan\Entities\Collection', get_class($col));
|
||||
|
@ -50,6 +51,7 @@ class Collections extends \WP_UnitTestCase {
|
|||
$x->set_default_order('DESC');
|
||||
|
||||
global $Tainacan_Collections;
|
||||
$x->validate();
|
||||
$col = $Tainacan_Collections->insert($x);
|
||||
|
||||
$collection = $Tainacan_Collections->fetch($col->get_id());
|
||||
|
@ -63,6 +65,7 @@ class Collections extends \WP_UnitTestCase {
|
|||
$i->set_collection($collection);
|
||||
|
||||
global $Tainacan_Items;
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert( $i );
|
||||
|
||||
$item = $Tainacan_Items->fetch( $item->get_id() );
|
||||
|
|
|
@ -21,6 +21,7 @@ class Filters extends \WP_UnitTestCase {
|
|||
$filter = new \Tainacan\Entities\Filter();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
|
||||
//setando os valores na classe do metadado
|
||||
|
@ -28,6 +29,7 @@ class Filters extends \WP_UnitTestCase {
|
|||
$filter->set_collection( $collection );
|
||||
|
||||
//inserindo o metadado
|
||||
$filter->validate();
|
||||
$filter = $Tainacan_Filters->insert( $filter );
|
||||
|
||||
$test = $Tainacan_Filters->fetch( $filter->get_id() );
|
||||
|
@ -47,6 +49,7 @@ class Filters extends \WP_UnitTestCase {
|
|||
$filter_range_type = new \Tainacan\Filter_Types\Range();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
|
||||
//setando os valores na classe do metadado
|
||||
|
@ -56,6 +59,7 @@ class Filters extends \WP_UnitTestCase {
|
|||
|
||||
|
||||
//inserindo o metadado
|
||||
$metadata->validate();
|
||||
$metadata = $Tainacan_Metadatas->insert($metadata);
|
||||
|
||||
//inserindo o filtro
|
||||
|
@ -68,6 +72,7 @@ class Filters extends \WP_UnitTestCase {
|
|||
|
||||
$filter->set_filter_type_object( $filter_list_type );
|
||||
|
||||
$filter->validate();
|
||||
$filter = $Tainacan_Filters->insert( $filter );
|
||||
|
||||
$test = $Tainacan_Filters->fetch( $filter->get_id() );
|
||||
|
|
|
@ -24,6 +24,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$metadata = new \Tainacan\Entities\Metadata();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
|
||||
//setando os valores na classe do metadado
|
||||
|
@ -32,6 +33,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$metadata->set_collection( $collection );
|
||||
|
||||
//inserindo o metadado
|
||||
$metadata->validate();
|
||||
$metadata = $Tainacan_Metadatas->insert($metadata);
|
||||
|
||||
$test = $Tainacan_Metadatas->fetch($metadata->get_id());
|
||||
|
@ -43,6 +45,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$i->set_collection($collection);
|
||||
|
||||
global $Tainacan_Items;
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert($i);
|
||||
|
||||
$item = $Tainacan_Items->fetch($item->get_id());
|
||||
|
@ -69,6 +72,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$metadata = new \Tainacan\Entities\Metadata();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
|
||||
//setando os valores na classe do metadado
|
||||
|
@ -78,6 +82,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$metadata->set_required( 'yes' );
|
||||
|
||||
//inserindo o metadado
|
||||
$metadata->validate();
|
||||
$metadata = $Tainacan_Metadatas->insert($metadata);
|
||||
|
||||
$test = $Tainacan_Metadatas->fetch($metadata->get_id());
|
||||
|
@ -89,6 +94,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$i->set_collection($collection);
|
||||
|
||||
global $Tainacan_Items;
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert($i);
|
||||
|
||||
$item = $Tainacan_Items->fetch($item->get_id());
|
||||
|
@ -114,6 +120,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$metadata = new \Tainacan\Entities\Metadata();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
|
||||
//setando os valores na classe do metadado
|
||||
|
@ -123,6 +130,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$metadata->set_collection_key( 'yes' );
|
||||
|
||||
//inserindo o metadado
|
||||
$metadata->validate();
|
||||
$metadata = $Tainacan_Metadatas->insert($metadata);
|
||||
|
||||
$test = $Tainacan_Metadatas->fetch($metadata->get_id());
|
||||
|
@ -134,6 +142,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$i->set_collection($collection);
|
||||
|
||||
global $Tainacan_Items;
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert($i);
|
||||
|
||||
$item = $Tainacan_Items->fetch($item->get_id());
|
||||
|
@ -145,6 +154,7 @@ class Item_Metadata extends \WP_UnitTestCase {
|
|||
$item_metadata = new \Tainacan\Entities\Item_Metadata_Entity($item, $metadata);
|
||||
$item_metadata->set_value($value);
|
||||
$this->assertTrue($item_metadata->validate());
|
||||
$item_metadata->validate();
|
||||
$item_metadata = $Tainacan_Item_Metadata->insert($item_metadata);
|
||||
|
||||
$n_item_metadata = new \Tainacan\Entities\Item_Metadata_Entity($item, $metadata);
|
||||
|
|
|
@ -23,8 +23,10 @@ class Items extends \WP_UnitTestCase {
|
|||
$collection2 = new \Tainacan\Entities\Collection();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
$collection2->set_name('teste2');
|
||||
$collection2->validate();
|
||||
$collection2 = $Tainacan_Collections->insert($collection2);
|
||||
|
||||
$metadata = new \Tainacan\Entities\Metadata();
|
||||
|
@ -33,12 +35,15 @@ class Items extends \WP_UnitTestCase {
|
|||
|
||||
$metadata->set_name('metadado');
|
||||
$metadata->set_collection( $collection );
|
||||
$metadata->validate();
|
||||
$metadata = $Tainacan_Metadatas->insert($metadata);
|
||||
$metadata2->set_name('metadado2');
|
||||
$metadata2->set_collection( $collection2 );
|
||||
$metadata2->validate();
|
||||
$metadata2 = $Tainacan_Metadatas->insert($metadata2);
|
||||
$metadata3->set_name('metadado3');
|
||||
$metadata3->set_collection( $collection2 );
|
||||
$metadata3->validate();
|
||||
$metadata3 = $Tainacan_Metadatas->insert($metadata3);
|
||||
|
||||
global $Tainacan_Items;
|
||||
|
@ -46,6 +51,7 @@ class Items extends \WP_UnitTestCase {
|
|||
$i->set_title('orange');
|
||||
$i->set_collection($collection);
|
||||
$i->add_metadata($metadata, 'value_1');
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert($i);
|
||||
|
||||
$item = $Tainacan_Items->fetch($item->get_id());
|
||||
|
@ -60,6 +66,7 @@ class Items extends \WP_UnitTestCase {
|
|||
$i->set_collection($collection2);
|
||||
$i->add_metadata($metadata2, 'value_2');
|
||||
$i->add_metadata($metadata3, 'value_2');
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert($i);
|
||||
|
||||
$i = new \Tainacan\Entities\Item();
|
||||
|
@ -68,6 +75,7 @@ class Items extends \WP_UnitTestCase {
|
|||
$i->add_metadata($metadata2, 'value_2');
|
||||
$i->add_metadata($metadata2, 'value_3'); // if we set twice, value is overridden
|
||||
$i->add_metadata($metadata3, 'value_3');
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert($i);
|
||||
|
||||
$i = new \Tainacan\Entities\Item();
|
||||
|
@ -75,6 +83,7 @@ class Items extends \WP_UnitTestCase {
|
|||
$i->set_collection($collection2);
|
||||
$i->add_metadata($metadata2, 'value_3');
|
||||
$i->add_metadata($metadata3, 'value_6');
|
||||
$i->validate();
|
||||
$item = $Tainacan_Items->insert($i);
|
||||
|
||||
// should return all 4 items
|
||||
|
|
|
@ -32,6 +32,7 @@ class Logs extends \WP_UnitTestCase {
|
|||
$blog_id = get_current_blog_id();
|
||||
|
||||
//inserindo
|
||||
$log->validate();
|
||||
$log = $Tainacan_Logs->insert($log);
|
||||
|
||||
//retorna a taxonomia
|
||||
|
@ -48,9 +49,11 @@ class Logs extends \WP_UnitTestCase {
|
|||
$value->set_default_order('DESC');
|
||||
|
||||
global $Tainacan_Collections;
|
||||
$value->validate();
|
||||
$value = $Tainacan_Collections->insert($value);
|
||||
|
||||
$value->set_name('new_testeLogs');
|
||||
$value->validate();
|
||||
$new_value = $Tainacan_Collections->insert($value);
|
||||
|
||||
$create_log = Log::create('teste create', 'testing a log creation function', $new_value, $value);
|
||||
|
|
|
@ -23,6 +23,7 @@ class Metadata extends \WP_UnitTestCase {
|
|||
$metadata = new \Tainacan\Entities\Metadata();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
|
||||
//setando os valores na classe do metadado
|
||||
|
@ -31,6 +32,7 @@ class Metadata extends \WP_UnitTestCase {
|
|||
$metadata->set_collection( $collection );
|
||||
|
||||
//inserindo o metadado
|
||||
$metadata->validate();
|
||||
$metadata = $Tainacan_Metadatas->insert($metadata);
|
||||
|
||||
$test = $Tainacan_Metadatas->fetch($metadata->get_id());
|
||||
|
@ -52,6 +54,7 @@ class Metadata extends \WP_UnitTestCase {
|
|||
$type = new \Tainacan\Field_Types\Text();
|
||||
|
||||
$collection->set_name('teste');
|
||||
$collection->validate();
|
||||
$collection = $Tainacan_Collections->insert($collection);
|
||||
|
||||
//setando os valores na classe do metadado
|
||||
|
@ -61,6 +64,7 @@ class Metadata extends \WP_UnitTestCase {
|
|||
|
||||
|
||||
//inserindo o metadado
|
||||
$metadata->validate();
|
||||
$metadata = $Tainacan_Metadatas->insert($metadata);
|
||||
|
||||
$test = $Tainacan_Metadatas->fetch($metadata->get_id());
|
||||
|
@ -88,21 +92,25 @@ class Metadata extends \WP_UnitTestCase {
|
|||
$metadata_default->set_name('metadata default');
|
||||
$metadata_default->set_collection_id( $Tainacan_Metadatas->get_default_metadata_attribute() );
|
||||
$metadata_default->set_field_type_object( $type );
|
||||
$metadata_default->validate();
|
||||
$Tainacan_Metadatas->insert($metadata_default);
|
||||
|
||||
//creating collection grandfather
|
||||
$collection_grandfather->set_name('collection grandfather');
|
||||
$collection_grandfather->validate();
|
||||
$collection_grandfather = $Tainacan_Collections->insert($collection_grandfather);
|
||||
|
||||
//creating metadata grandfather
|
||||
$metadata_grandfather->set_name('metadata grandfather');
|
||||
$metadata_grandfather->set_collection_id( $collection_grandfather->get_id() );
|
||||
$metadata_grandfather->set_field_type_object( $type );
|
||||
$metadata_grandfather->validate();
|
||||
$Tainacan_Metadatas->insert($metadata_grandfather);
|
||||
|
||||
//creating collection father
|
||||
$collection_father->set_name('collection father');
|
||||
$collection_father->set_parent( $collection_grandfather->get_id() );
|
||||
$collection_father->validate();
|
||||
$collection_father = $Tainacan_Collections->insert( $collection_father );
|
||||
|
||||
$this->assertEquals( $collection_grandfather->get_id(), $collection_father->get_parent() );
|
||||
|
@ -111,11 +119,13 @@ class Metadata extends \WP_UnitTestCase {
|
|||
$metadata_father->set_name('metadata father');
|
||||
$metadata_father->set_collection_id( $collection_father->get_id() );
|
||||
$metadata_father->set_field_type_object( $type );
|
||||
$metadata_father->validate();
|
||||
$Tainacan_Metadatas->insert($metadata_father);
|
||||
|
||||
//creating collection son
|
||||
$collection_son->set_name('collection son');
|
||||
$collection_son->set_parent( $collection_father->get_id() );
|
||||
$collection_son->validate();
|
||||
$collection_son = $Tainacan_Collections->insert($collection_son);
|
||||
|
||||
$this->assertEquals( $collection_father->get_id(), $collection_son->get_parent() );
|
||||
|
@ -124,6 +134,7 @@ class Metadata extends \WP_UnitTestCase {
|
|||
$metadata_son->set_name('metadata son');
|
||||
$metadata_son->set_collection_id( $collection_son->get_id() );
|
||||
$metadata_son->set_field_type_object( $type );
|
||||
$metadata_son->validate();
|
||||
$Tainacan_Metadatas->insert($metadata_son);
|
||||
|
||||
$retrieve_metadata = $Tainacan_Metadatas->fetch_by_collection( $collection_son, [], 'OBJECT' );
|
||||
|
|
|
@ -28,6 +28,7 @@ class Taxonomies extends \WP_UnitTestCase {
|
|||
$taxonomy->set_allow_insert(true);
|
||||
|
||||
//inserindo
|
||||
$taxonomy->validate();
|
||||
$taxonomy = $Tainacan_Taxonomies->insert($taxonomy);
|
||||
|
||||
//retorna a taxonomia
|
||||
|
@ -48,6 +49,7 @@ class Taxonomies extends \WP_UnitTestCase {
|
|||
$taxonomy->set_name('genero');
|
||||
|
||||
//insere a taxonomia
|
||||
$taxonomy->validate();
|
||||
$taxonomy = $Tainacan_Taxonomies->insert($taxonomy);
|
||||
|
||||
//retorna a taxonomia
|
||||
|
|
Loading…
Reference in New Issue