Browse Source

Adding failing tests for bool updates switching with the field name

dogmatic69 14 years ago
parent
commit
a5685947b9
1 changed files with 49 additions and 0 deletions
  1. 49 0
      lib/Cake/Test/Case/Model/ModelWriteTest.php

+ 49 - 0
lib/Cake/Test/Case/Model/ModelWriteTest.php

@@ -6078,6 +6078,55 @@ class ModelWriteTest extends BaseModelTest {
 		$result = Set::extract('/DataTest/count', $model->find('all', array('fields' => 'count')));
 		$this->assertEquals(array(6, 4, 5, 2), $result);
 	}
+	
+	public function testToggleBoolFields() {
+		$this->loadFixtures('CounterCachePost');
+		$Post = new CounterCachePost();
+		$Post->unbindModel(array('belongsTo' => array('User')), true);
+		
+		$true = array('Post' => array('published' => true, 'id' => 2));
+		$false = array('Post' => array('published' => false, 'id' => 2));
+		$fields = array('Post.published', 'Post.id');
+		$updateConditions = array('Post.id' => 2);
+		
+		// check its true
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $true);
+		
+		// Testing without the alias
+		$this->assertTrue($Post->updateAll(array('published' => '1 - published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $false);
+		
+		$this->assertTrue($Post->updateAll(array('published' => '1 - published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $true);
+		
+		// Testing with the alias
+		$this->assertTrue($Post->updateAll(array('Post.published' => '1 - Post.published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $false);
+		
+		$this->assertTrue($Post->updateAll(array('Post.published' => '1 - Post.published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $true);
+		
+		$this->assertTrue($Post->updateAll(array('Post.published = 1 - Post.published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $false);
+		
+		$this->assertTrue($Post->updateAll(array('Post.published = 1 - Post.published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $true);
+		
+		$this->assertTrue($Post->updateAll(array('Post.published' => '! Post.published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $false);
+		
+		$this->assertTrue($Post->updateAll(array('Post.published' => 'NOT Post.published'), $updateConditions));
+		$result = $Post->find('first', array('conditions' => $updateConditions, 'fields' => $fields));
+		$this->assertEqual($result, $true);
+	}
 
 /**
  * TestFindAllWithoutForeignKey