CustomFindsBehaviorTest.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. App::uses('CustomFindsBehavior', 'Tools.Model/Behavior');
  3. App::uses('AppModel', 'Model');
  4. App::uses('MyCakeTestCase', 'Tools.TestSuite');
  5. class CustomFindsBehaviorTest extends MyCakeTestCase {
  6. public function setUp() {
  7. $this->CustomFinds = new CustomFindsBehavior();
  8. $this->Model = new CustomFindsTest();
  9. $this->Model->customFinds = array(
  10. 'topSellers' => array(
  11. 'fields' => array('Product.name','Product.price'),
  12. 'contain' => array('ProductImage.source'),
  13. 'conditions' => array('Product.countSeller >' => 20, 'Product.is_active' => 1),
  14. 'recursive' => 1,
  15. //All other find options
  16. )
  17. );
  18. }
  19. public function tearDown() {
  20. }
  21. public function testObject() {
  22. $this->assertTrue(is_a($this->CustomFinds, 'CustomFindsBehavior'));
  23. }
  24. public function testModify() {
  25. $query = array(
  26. 'custom' => 'topSellers',
  27. 'recursive' => 0,
  28. 'conditions' => array('Product.count >'=>0),
  29. );
  30. $res = $this->Model->Behaviors->CustomFinds->beforeFind($this->Model, $query);
  31. //pr($res);
  32. $queryResult = $this->Model->customFinds['topSellers'];
  33. $queryResult['recursive'] = 0;
  34. $queryResult['conditions']['Product.count >'] = 0;
  35. $this->assertTrue(!empty($res));
  36. $this->assertSame($queryResult['recursive'], $res['recursive']);
  37. $this->assertSame($queryResult['conditions'], $res['conditions']);
  38. }
  39. public function testModifyWithRemove() {
  40. $query = array(
  41. 'custom' => 'topSellers',
  42. 'conditions' => array('Product.count >'=>0),
  43. 'remove' => array('conditions')
  44. );
  45. $res = $this->Model->Behaviors->CustomFinds->beforeFind($this->Model, $query);
  46. //pr($res);
  47. $queryResult = $this->Model->customFinds['topSellers'];
  48. $queryResult['conditions'] = array('Product.count >'=>0);
  49. $this->assertTrue(!empty($res));
  50. $this->assertSame($queryResult['recursive'], $res['recursive']);
  51. $this->assertSame($queryResult['conditions'], $res['conditions']);
  52. $query = array(
  53. 'custom' => 'topSellers',
  54. 'conditions' => array('Product.count >'=>0),
  55. 'remove' => array('conditions'=>array('Product.countSeller >'))
  56. );
  57. $res = $this->Model->Behaviors->CustomFinds->beforeFind($this->Model, $query);
  58. //pr($res);
  59. $queryResult = $this->Model->customFinds['topSellers'];
  60. unset($queryResult['conditions']['Product.countSeller >']);
  61. $queryResult['conditions']['Product.count >'] = 0;
  62. $this->assertTrue(!empty($res));
  63. $this->assertSame($queryResult['conditions'], $res['conditions']);
  64. }
  65. }
  66. class CustomFindsTest extends AppModel {
  67. public $useTable = false;
  68. public $actsAs = array('Tools.CustomFinds');
  69. }