Browse Source

Not comparing before and after values in Entity::set(), property is marked dirty whenever it is set

Jose Lorenzo Rodriguez 12 years ago
parent
commit
fa77f26ce0
2 changed files with 5 additions and 11 deletions
  1. 1 8
      src/ORM/Entity.php
  2. 4 3
      tests/TestCase/ORM/EntityTest.php

+ 1 - 8
src/ORM/Entity.php

@@ -248,14 +248,7 @@ class Entity implements \ArrayAccess, \JsonSerializable {
 				continue;
 				continue;
 			}
 			}
 
 
-			$markDirty = true;
-			if (isset($this->_properties[$p])) {
-				$markDirty = $value !== $this->_properties[$p];
-			}
-
-			if ($markDirty) {
-				$this->dirty($p, true);
-			}
+			$this->dirty($p, true);
 
 
 			if (!$options['setter']) {
 			if (!$options['setter']) {
 				$this->_properties[$p] = $value;
 				$this->_properties[$p] = $value;

+ 4 - 3
tests/TestCase/ORM/EntityTest.php

@@ -507,13 +507,14 @@ class EntityTest extends TestCase {
 		$entity = new Entity([
 		$entity = new Entity([
 			'title' => 'Foo',
 			'title' => 'Foo',
 		]);
 		]);
+
 		$entity->dirty('title', false);
 		$entity->dirty('title', false);
 		$this->assertFalse($entity->dirty('title'));
 		$this->assertFalse($entity->dirty('title'));
+
 		$entity->set('title', 'Foo');
 		$entity->set('title', 'Foo');
-		$this->assertFalse($entity->dirty('title'));
+		$this->assertTrue($entity->dirty('title'));
+
 		$entity->set('title', 'Foo');
 		$entity->set('title', 'Foo');
-		$this->assertFalse($entity->dirty('title'));
-		$entity->set('title', 'Something Else');
 		$this->assertTrue($entity->dirty('title'));
 		$this->assertTrue($entity->dirty('title'));
 
 
 		$entity->set('something', 'else');
 		$entity->set('something', 'else');