KeyValueBehaviorTest.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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->load('Tools.KeyValue');
  13. }
  14. public function testObject() {
  15. $this->assertTrue(is_object($this->KeyValueBehavior));
  16. $this->assertInstanceOf('KeyValueBehavior', $this->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. $res = $this->Model->saveSection(2, array('User' => array('x' => 1, 'y' => 'z')), 'Profile');
  37. $this->assertTrue($res);
  38. $res = $this->Model->getSection(2);
  39. $this->assertTrue(empty($res));
  40. $res = $this->Model->saveSection(2, array('User' => array('e' => 'f'), 'Profile'=>array('x' => 3, 'y' => 'abc')), 'Profile');
  41. $this->assertTrue($res);
  42. $res = $this->Model->getSection(2);
  43. $this->debug($res);
  44. $this->assertTrue(!empty($res['Profile']));
  45. $res = $this->Model->getSection(2, 'Profile');
  46. $this->assertIdentical(array('x' => '3', 'y' => 'abc'), $res);
  47. }
  48. public function testDefaults() {
  49. $this->Model->keyValueDefaults = array(
  50. 'User' => array(
  51. 'x' => 0,
  52. 'y' => '',
  53. 'z' => '123',
  54. )
  55. );
  56. $this->Model->Behaviors->unload('KeyValue');
  57. $this->Model->Behaviors->load('Tools.KeyValue');
  58. $this->Model->saveSection(0, array('User'=>array('x'=>1, 'y'=>'z')));
  59. $res = $this->Model->getSection(0, 'User');
  60. $this->assertEquals(array('x'=>1, 'y'=>'z', 'z' => 123), $res);
  61. $res = $this->Model->getSection(0, 'User', 'y');
  62. $this->assertEquals('z', $res);
  63. $res = $this->Model->getSection(0, 'User', 'a');
  64. $this->assertEquals(null, $res);
  65. $res = $this->Model->getSection(0, 'User', 'z');
  66. $this->assertEquals('123', $res);
  67. }
  68. public function testReset() {
  69. $this->Model->saveSection(0, array('User'=>array('x'=>1, 'y'=>'z')));
  70. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  71. $this->assertEquals(3, $res);
  72. $res = $this->Model->resetSection(0, 'User', 'y');
  73. $this->assertTrue($res);
  74. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  75. $this->assertEquals(2, $res);
  76. $this->Model->Behaviors->unload('KeyValue');
  77. $this->Model->Behaviors->load('Tools.KeyValue', array('defaultOnEmpty' => true));
  78. $this->Model->keyValueDefaults = array(
  79. 'User' => array(
  80. 'x' => 0,
  81. 'y' => '',
  82. 'z' => '123',
  83. )
  84. );
  85. $this->Model->saveSection(0, array('User'=>array('x'=>1, 'y'=>'z', 'z' => 123)));
  86. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  87. $this->assertEquals(4, $res);
  88. $res = $this->Model->saveSection(0, array('User'=>array('x'=>0, 'y'=>null)));
  89. $this->assertTrue($res);
  90. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  91. $this->assertEquals(3, $res);
  92. $this->Model->Behaviors->unload('KeyValue');
  93. $this->Model->Behaviors->load('Tools.KeyValue', array('deleteIfDefault' => true));
  94. $res = $this->Model->saveSection(0, array('User'=>array('z'=>'123')));
  95. $this->assertTrue($res);
  96. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  97. $this->assertEquals(2, $res);
  98. $res = $this->Model->resetSection(1);
  99. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  100. $this->assertEquals(1, $res);
  101. $res = $this->Model->resetSection();
  102. $res = $this->Model->Behaviors->KeyValue->KeyValue->find('count');
  103. $this->assertEquals(0, $res);
  104. }
  105. }