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