KeyValueBehaviorTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. App::uses('KeyValueBehavior', 'Tools.Model/Behavior');
  3. App::uses('MyCakeTestCase', 'Tools.TestSuite');
  4. class KeyValueBehaviorTest extends MyCakeTestCase {
  5. public $fixtures = array('plugin.tools.key_value', 'core.user');
  6. public $KeyValueBehavior;
  7. public $Model;
  8. public function setUp() {
  9. parent::setUp();
  10. $this->KeyValueBehavior = new KeyValueBehavior();
  11. $this->Model = ClassRegistry::init('User');
  12. $this->Model->Behaviors->attach('Tools.KeyValue');
  13. }
  14. public function testObject() {
  15. $this->assertTrue(is_object($this->KeyValueBehavior));
  16. $this->assertInstanceOf($this->KeyValueBehavior, 'KeyValueBehavior');
  17. }
  18. public function testValidate() {
  19. $res = $this->Model->validateSection(array('User'=>array('x'=>1, 'y'=>'')));
  20. $this->assertTrue(!empty($res));
  21. $this->Model->keyValueValidate = array(
  22. 'User' => array('y' => 'notEmpty'),
  23. );
  24. $res = $this->Model->validateSection(array('User'=>array('x'=>1, 'y'=>'')));
  25. $this->assertFalse($res);
  26. $res = $this->Model->validateSection(array('User'=>array('x'=>1, 'y'=>'1')));
  27. $this->assertTrue(!empty($res));
  28. }
  29. public function testSaveAndGet() {
  30. $this->Model->saveSection(1, array('User'=>array('x'=>1, 'y'=>'z')));
  31. $res = $this->Model->getSection(2);
  32. $this->assertTrue(empty($res));
  33. $res = $this->Model->getSection(1);
  34. $this->assertTrue(!empty($res['User']));
  35. $this->assertEquals('z', $res['User']['y']);
  36. $this->Model->saveSection(2, array('User'=>array('x'=>1, 'y'=>'z')), 'Profile');
  37. $res = $this->Model->getSection(2);
  38. $this->assertTrue(!empty($res['Profile']));
  39. //debug($res); ob_flush();
  40. }
  41. public function testDefaults() {
  42. $this->Model->keyValueDefaults = array(
  43. 'User' => array(
  44. 'x' => 0,
  45. 'y' => '',
  46. 'z' => '123',
  47. )
  48. );
  49. $this->Model->Behaviors->detach('KeyValue');
  50. $this->Model->Behaviors->attach('Tools.KeyValue');
  51. $this->Model->saveSection(0, array('User'=>array('x'=>1, 'y'=>'z')));
  52. $res = $this->Model->getSection(0, 'User');
  53. $this->assertEquals(array('x'=>1, 'y'=>'z', 'z' => 123), $res);
  54. $res = $this->Model->getSection(0, 'User', 'y');
  55. $this->assertEquals('z', $res);
  56. $res = $this->Model->getSection(0, 'User', 'a');
  57. $this->assertEquals(null, $res);
  58. $res = $this->Model->getSection(0, 'User', 'z');
  59. $this->assertEquals('123', $res);
  60. }
  61. public function testReset() {
  62. $this->Model->saveSection(0, array('User'=>array('x'=>1, 'y'=>'z')));
  63. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  64. $this->assertEquals(3, $res);
  65. $res = $this->Model->resetSection(0, 'User', 'y');
  66. $this->assertTrue($res);
  67. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  68. $this->assertEquals(2, $res);
  69. $this->Model->Behaviors->detach('KeyValue');
  70. $this->Model->Behaviors->attach('Tools.KeyValue', array('defaultOnEmpty' => true));
  71. $this->Model->keyValueDefaults = array(
  72. 'User' => array(
  73. 'x' => 0,
  74. 'y' => '',
  75. 'z' => '123',
  76. )
  77. );
  78. $this->Model->saveSection(0, array('User'=>array('x'=>1, 'y'=>'z', 'z' => 123)));
  79. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  80. $this->assertEquals(4, $res);
  81. $res = $this->Model->saveSection(0, array('User'=>array('x'=>0, 'y'=>null)));
  82. $this->assertTrue($res);
  83. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  84. $this->assertEquals(3, $res);
  85. $this->Model->Behaviors->detach('KeyValue');
  86. $this->Model->Behaviors->attach('Tools.KeyValue', array('deleteIfDefault' => true));
  87. $res = $this->Model->saveSection(0, array('User'=>array('z'=>'123')));
  88. $this->assertTrue($res);
  89. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  90. $this->assertEquals(2, $res);
  91. $res = $this->Model->resetSection(1);
  92. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  93. $this->assertEquals(1, $res);
  94. $res = $this->Model->resetSection();
  95. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  96. $this->assertEquals(0, $res);
  97. }
  98. }