MultipleDisplayFieldsBehaviorTest.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. /**
  16. * MultipleDisplayFieldsBehaviorTest::testObject()
  17. *
  18. * @return void
  19. */
  20. public function testObject() {
  21. $this->assertTrue(is_object($this->MultipleDisplayFieldsBehavior));
  22. $this->assertInstanceOf('MultipleDisplayFieldsBehavior', $this->MultipleDisplayFieldsBehavior);
  23. }
  24. /**
  25. * MultipleDisplayFieldsBehaviorTest::testSimple()
  26. *
  27. * @return void
  28. */
  29. public function testSimple() {
  30. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields');
  31. $res = $this->Comment->find('first');
  32. $this->assertSame(7, count($res['Comment']));
  33. $this->Comment->Behaviors->unload('MultipleDisplayFields');
  34. // auto %s pattern
  35. $config = array(
  36. 'fields' => array(
  37. $this->Comment->alias . '.comment', $this->Comment->alias . '.published'
  38. ),
  39. );
  40. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
  41. $res = $this->Comment->find('list');
  42. $this->debug($res);
  43. $this->assertEquals('First Comment for First Article Y', $res[1]);
  44. $this->Comment->Behaviors->unload('MultipleDisplayFields');
  45. // custom pattern
  46. $config = array(
  47. 'fields' => array(
  48. $this->Comment->alias . '.comment', $this->Comment->alias . '.published'
  49. ),
  50. 'pattern' => '%s (%s)',
  51. );
  52. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
  53. $res = $this->Comment->find('list');
  54. $this->debug($res);
  55. $this->assertEquals('First Comment for First Article (Y)', $res[1]);
  56. }
  57. /**
  58. * MultipleDisplayFieldsBehaviorTest::testAdvanced()
  59. *
  60. * @return void
  61. */
  62. public function testAdvanced() {
  63. $config = array(
  64. 'fields' => array(
  65. $this->Comment->alias . '.comment', $this->Comment->User->alias . '.user', $this->Comment->alias . '.published'
  66. ),
  67. 'displayField' => 'display_field',
  68. 'pattern' => '%s by %s (%s)',
  69. );
  70. $this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
  71. $res = $this->Comment->find('all', array('order' => array(), 'contain' => array('User')));
  72. $this->debug($res);
  73. $this->assertEquals('First Comment for First Article by Y (nate)', $res[0]['Comment']['display_field']);
  74. }
  75. }