@@ 474-489 (lines=16) @@ | ||
471 | * |
|
472 | * @return void |
|
473 | */ |
|
474 | public function testCounterCacheUpdated() { |
|
475 | $this->loadFixtures('CounterCacheUser', 'CounterCachePost'); |
|
476 | $User = new CounterCacheUser(); |
|
477 | $Post = new CounterCachePost(); |
|
478 | ||
479 | $data = $Post->find('first', array( |
|
480 | 'conditions' => array('id' => 1), |
|
481 | 'recursive' => -1 |
|
482 | )); |
|
483 | $data[$Post->alias]['user_id'] = 301; |
|
484 | $Post->save($data); |
|
485 | ||
486 | $users = $User->find('all', array('order' => 'User.id')); |
|
487 | $this->assertEquals(1, $users[0]['User']['post_count']); |
|
488 | $this->assertEquals(2, $users[1]['User']['post_count']); |
|
489 | } |
|
490 | ||
491 | /** |
|
492 | * Test counter cache with models that use a non-standard (i.e. not using 'id') |
|
@@ 497-516 (lines=20) @@ | ||
494 | * |
|
495 | * @return void |
|
496 | */ |
|
497 | public function testCounterCacheWithNonstandardPrimaryKey() { |
|
498 | $this->loadFixtures( |
|
499 | 'CounterCacheUserNonstandardPrimaryKey', |
|
500 | 'CounterCachePostNonstandardPrimaryKey' |
|
501 | ); |
|
502 | ||
503 | $User = new CounterCacheUserNonstandardPrimaryKey(); |
|
504 | $Post = new CounterCachePostNonstandardPrimaryKey(); |
|
505 | ||
506 | $data = $Post->find('first', array( |
|
507 | 'conditions' => array('pid' => 1), |
|
508 | 'recursive' => -1 |
|
509 | )); |
|
510 | $data[$Post->alias]['uid'] = 301; |
|
511 | $Post->save($data); |
|
512 | ||
513 | $users = $User->find('all', array('order' => 'User.uid')); |
|
514 | $this->assertEquals(1, $users[0]['User']['post_count']); |
|
515 | $this->assertEquals(2, $users[1]['User']['post_count']); |
|
516 | } |
|
517 | ||
518 | /** |
|
519 | * test Counter Cache With Self Joining table |
|
@@ 650-665 (lines=16) @@ | ||
647 | * |
|
648 | * @return void |
|
649 | */ |
|
650 | public function testCounterCacheSkip() { |
|
651 | $this->loadFixtures('CounterCacheUser', 'CounterCachePost'); |
|
652 | $User = new CounterCacheUser(); |
|
653 | $Post = new CounterCachePost(); |
|
654 | ||
655 | $data = $Post->find('first', array( |
|
656 | 'conditions' => array('id' => 1), |
|
657 | 'recursive' => -1 |
|
658 | )); |
|
659 | $data[$Post->alias]['user_id'] = 301; |
|
660 | $Post->save($data, array('counterCache' => false)); |
|
661 | ||
662 | $users = $User->find('all', array('order' => 'User.id')); |
|
663 | $this->assertEquals(2, $users[0]['User']['post_count']); |
|
664 | $this->assertEquals(1, $users[1]['User']['post_count']); |
|
665 | } |
|
666 | ||
667 | /** |
|
668 | * test that beforeValidate returning false can abort saves. |