MultipleDisplayFieldsBehaviorTest.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. App::uses('MultipleDisplayFieldsBehavior', 'Tools.Model/Behavior');
  3. App::uses('MyCakeTestCase', 'Tools.TestSuite');
  4. class MultipleDisplayFieldsBehaviorTest extends MyCakeTestCase {
  5. public $fixtures = array('core.comment', 'core.user');
  6. public $Comment;
  7. public $MultipleDisplayFieldsBehavior;
  8. public function setUp() {
  9. parent::setUp();
  10. $this->MultipleDisplayFieldsBehavior = new MultipleDisplayFieldsBehavior();
  11. $this->Comment = ClassRegistry::init('Comment');
  12. $this->Comment->bindModel(array('belongsTo' => array('User')), false);
  13. $this->Comment->displayField = 'comment';
  14. }
  15. public function testObject() {
  16. $this->assertTrue(is_object($this->MultipleDisplayFieldsBehavior));
  17. $this->assertInstanceOf('MultipleDisplayFieldsBehavior', $this->MultipleDisplayFieldsBehavior);
  18. }
  19. public function testSimple() {
  20. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields');
  21. $res = $this->Comment->find('first');
  22. $this->assertSame(7, count($res['Comment']));
  23. $this->Comment->Behaviors->unload('MultipleDisplayFields');
  24. // auto %s pattern
  25. $config = array(
  26. 'fields' => array(
  27. $this->Comment->alias . '.comment', $this->Comment->alias . '.published'
  28. ),
  29. );
  30. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
  31. $res = $this->Comment->find('list');
  32. $this->debug($res);
  33. $this->assertEquals('First Comment for First Article Y', $res[1]);
  34. $this->Comment->Behaviors->unload('MultipleDisplayFields');
  35. // custom pattern
  36. $config = array(
  37. 'fields' => array(
  38. $this->Comment->alias . '.comment', $this->Comment->alias . '.published'
  39. ),
  40. 'pattern' => '%s (%s)',
  41. );
  42. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
  43. $res = $this->Comment->find('list');
  44. $this->debug($res);
  45. $this->assertEquals('First Comment for First Article (Y)', $res[1]);
  46. }
  47. public function testAdvanced() {
  48. //$res = $this->Comment->find('first', array('contain' => array('User')));
  49. $config = array(
  50. 'fields' => array(
  51. $this->Comment->alias . '.comment', $this->Comment->User->alias . '.user', $this->Comment->alias . '.published'
  52. ),
  53. 'displayField' => array('display_field'),
  54. 'pattern' => '%s by %s (%s)',
  55. );
  56. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
  57. $res = $this->Comment->find('list', array('contain' => array('User')));
  58. $this->debug($res);
  59. $this->assertEquals('First Comment for First Article by Y (nate)', $res[1]);
  60. }
  61. }