Adding failing tests for bool updates switching with the field name

This commit is contained in:
dogmatic69 2012-03-23 21:21:13 +00:00 committed by mark_story
parent 4b49a287a6
commit a5685947b9

View file

@ -6079,6 +6079,55 @@ class ModelWriteTest extends BaseModelTest {
$this->assertEquals(array(6, 4, 5, 2), $result); $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 * TestFindAllWithoutForeignKey
* *