/** * test that delete() updates the correct records counterCache() records. * * @return void */ public function testDeleteUpdatingCounterCacheCorrectly() { $this->loadFixtures('CounterCacheUser', 'CounterCachePost'); $User = new CounterCacheUser(); $User->Post->delete(3); $result = $User->read(null, 301); $this->assertEquals(0, $result['User']['post_count']); $result = $User->read(null, 66); $this->assertEquals(2, $result['User']['post_count']); }
/** * Tests that counter caches are unchanged when using 'counterCache' => false * * @return void */ public function testCounterCacheSkip() { $this->loadFixtures('CounterCacheUser', 'CounterCachePost'); $User = new CounterCacheUser(); $Post = new CounterCachePost(); $data = $Post->find('first', array('conditions' => array('id' => 1), 'recursive' => -1)); $data[$Post->alias]['user_id'] = 301; $Post->save($data, array('counterCache' => false)); $users = $User->find('all', array('order' => 'User.id')); $this->assertEquals(2, $users[0]['User']['post_count']); $this->assertEquals(1, $users[1]['User']['post_count']); }
/** * Tests having multiple counter caches for an associated model * * @access public * @return void */ public function testCounterCacheMultipleCaches() { $this->loadFixtures('CounterCacheUser', 'CounterCachePost'); $User = new CounterCacheUser(); $Post = new CounterCachePost(); $Post->unbindModel(array('belongsTo' => array('User')), false); $Post->bindModel(array('belongsTo' => array('User' => array('className' => 'CounterCacheUser', 'foreignKey' => 'user_id', 'counterCache' => array(true, 'posts_published' => array('Post.published' => true))))), false); // Count Increase $user = $User->find('first', array('conditions' => array('id' => 66), 'recursive' => -1)); $data = array('Post' => array('id' => 22, 'title' => 'New Post', 'user_id' => 66, 'published' => true)); $Post->save($data); $result = $User->find('first', array('conditions' => array('id' => 66), 'recursive' => -1)); $this->assertEquals(3, $result[$User->alias]['post_count']); $this->assertEquals(2, $result[$User->alias]['posts_published']); // Count decrease $Post->delete(1); $result = $User->find('first', array('conditions' => array('id' => 66), 'recursive' => -1)); $this->assertEquals(2, $result[$User->alias]['post_count']); $this->assertEquals(2, $result[$User->alias]['posts_published']); // Count update $data = $Post->find('first', array('conditions' => array('id' => 1), 'recursive' => -1)); $data[$Post->alias]['user_id'] = 301; $Post->save($data); $result = $User->find('all', array('order' => 'User.id')); $this->assertEquals(2, $result[0]['User']['post_count']); $this->assertEquals(1, $result[1]['User']['posts_published']); }