diff multi value

This commit is contained in:
Jacson Passold 2018-02-14 15:23:46 -02:00
parent f8c210b57a
commit d7c58b17ca
2 changed files with 24 additions and 5 deletions

View File

@ -537,7 +537,22 @@ abstract class Repository {
foreach ($map as $prop => $mapped) {
if($old_entity->get_mapped_property($prop) != $new_entity->get_mapped_property($prop) ) {
$diff[$prop] = ['new' => $new_entity->get_mapped_property($prop), 'old' => $old_entity->get_mapped_property($prop)];
if($mapped['map'] == 'meta_multi') {
$meta_diff = array_diff( $new_entity->get_mapped_property($prop), $old_entity->get_mapped_property($prop) );
if( !empty($meta_diff) ) {
$diff[$prop] = [
'new' => $new_entity->get_mapped_property($prop),
'old' => $old_entity->get_mapped_property($prop),
'diff' => $meta_diff //TODO better expose difference
];
}
}
else {
$diff[$prop] = [
'new' => $new_entity->get_mapped_property($prop),
'old' => $old_entity->get_mapped_property($prop)
];
}
}
}
$diff = apply_filters('tainacan-entity-diff', $diff, $new, $old);

View File

@ -228,21 +228,25 @@ class Collections extends TAINACAN_UnitTestCase {
$x = $this->tainacan_entity_factory->create_entity(
'collection',
array(
'name' => 'testeDiff',
'description' => 'adasdasdsa',
'default_order' => 'DESC'
'name' => 'testeDiff',
'description' => 'adasdasdsa',
'default_order' => 'DESC',
'moderators_ids' => [1,2,3]
),
true
);
$x->set_name('OtherValue');
$x->set_description('testeDiff2');
$x->set_moderators_ids([3,4,5]);
$diff = $x->diff();
$this->assertEquals(2, count($diff));
$this->assertEquals(3, count($diff));
$this->assertEquals($diff['name']['new'], 'OtherValue');
$this->assertEquals($diff['name']['old'], 'testeDiff');
$this->assertEquals($diff['description']['new'], 'testeDiff2');
$this->assertEquals($diff['description']['old'], 'adasdasdsa');
$this->assertEquals([1 => 4, 2 => 5], $diff['moderators_ids']['diff']);
}
}