NumberFormatBehaviorTest.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. App::uses('NumberFormatBehavior', 'Tools.Model/Behavior');
  3. App::uses('MyCakeTestCase', 'Tools.TestSuite');
  4. class NumberFormatBehaviorTest extends MyCakeTestCase {
  5. public $fixtures = array('plugin.tools.payment_method');
  6. public $Model;
  7. public function setUp() {
  8. parent::setUp();
  9. $this->Model = ClassRegistry::init('PaymentMethod');
  10. $this->Model->Behaviors->load('Tools.NumberFormat', array('fields'=>array('rel_rate', 'set_rate'), 'output'=>true));
  11. }
  12. public function tearDown() {
  13. parent::tearDown();
  14. unset($this->Model);
  15. }
  16. public function testObject() {
  17. $this->assertInstanceOf('NumberFormatBehavior', $this->Model->Behaviors->NumberFormat);
  18. }
  19. public function testBasic() {
  20. //echo $this->_header(__FUNCTION__);
  21. $data = array(
  22. 'name' => 'some Name',
  23. 'set_rate' => '0,1',
  24. 'rel_rate' => '-0,02',
  25. );
  26. $this->Model->set($data);
  27. $res = $this->Model->validates();
  28. $this->assertTrue($res);
  29. $res = $this->Model->data;
  30. //debug($res);
  31. $this->assertSame($res[$this->Model->alias]['set_rate'], 0.1);
  32. $this->assertSame($res[$this->Model->alias]['rel_rate'], -0.02);
  33. }
  34. public function testValidates() {
  35. //echo $this->_header(__FUNCTION__);
  36. $data = array(
  37. 'name' => 'some Name',
  38. 'set_rate' => '0,1',
  39. 'rel_rate' => '-0,02',
  40. );
  41. $this->Model->set($data);
  42. $res = $this->Model->validates();
  43. $this->assertTrue($res);
  44. $res = $this->Model->data;
  45. //debug($res);
  46. $this->assertSame($res[$this->Model->alias]['set_rate'], 0.1);
  47. $this->assertSame($res[$this->Model->alias]['rel_rate'], -0.02);
  48. }
  49. public function testFind() {
  50. //echo $this->_header(__FUNCTION__);
  51. $data = array(
  52. 'name' => 'some Name',
  53. 'set_rate' => '0,1',
  54. 'rel_rate' => '-0,02',
  55. );
  56. $this->Model->create();
  57. $res = $this->Model->save($data);
  58. $this->assertTrue((bool)$res);
  59. # find all
  60. $res = $this->Model->find('all', array('order' => array('created' => 'DESC')));
  61. $this->assertTrue(!empty($res));
  62. $this->assertSame(substr($res[0][$this->Model->alias]['set_rate'], 0, 4), '0,10');
  63. $this->assertSame(substr($res[0][$this->Model->alias]['rel_rate'], 0, 5), '-0,02');
  64. # find first
  65. $res = $this->Model->find('first', array('order' => array('created' => 'DESC')));
  66. $this->assertTrue(!empty($res));
  67. $this->assertSame($res[$this->Model->alias]['set_rate'], '0,10');
  68. $this->assertSame($res[$this->Model->alias]['rel_rate'], '-0,0200');
  69. $res = $this->Model->find('count', array());
  70. $this->assertSame($res, 8);
  71. }
  72. public function testStrict() {
  73. $this->Model->Behaviors->unload('NumberFormat');
  74. $this->Model->Behaviors->load('Tools.NumberFormat', array('fields'=>array('rel_rate', 'set_rate'), 'strict'=>true));
  75. $data = array(
  76. 'name' => 'some Name',
  77. 'set_rate' => '0.1',
  78. 'rel_rate' => '-0,02',
  79. );
  80. $this->Model->set($data);
  81. $res = $this->Model->validates();
  82. $this->assertTrue($res);
  83. $res = $this->Model->data;
  84. //debug($res);
  85. $this->assertSame($res[$this->Model->alias]['set_rate'], '0#1');
  86. $this->assertSame($res[$this->Model->alias]['rel_rate'], -0.02);
  87. }
  88. public function testBeforeSave() {
  89. $this->Model->Behaviors->unload('NumberFormat');
  90. $this->Model->Behaviors->load('Tools.NumberFormat', array('fields'=>array('rel_rate', 'set_rate'), 'before'=>'save', 'output'=>false));
  91. $data = array(
  92. 'name' => 'some Name',
  93. 'set_rate' => '2,11',
  94. 'rel_rate' => '-1,22',
  95. );
  96. $this->Model->create();
  97. $res = $this->Model->save($data);
  98. $this->assertTrue((bool)$res);
  99. $res = $this->Model->find('first', array('order' => array('created' => 'DESC')));
  100. $this->assertTrue(!empty($res));
  101. $this->assertSame(substr($res[$this->Model->alias]['set_rate'], 0, 4), '2.11');
  102. $this->assertSame(substr($res[$this->Model->alias]['rel_rate'], 0, 5), '-1.22');
  103. }
  104. public function testLocaleConv() {
  105. $res = setlocale(LC_NUMERIC, 'de_DE.utf8', 'german');
  106. $this->skipIf(empty($res));
  107. $this->assertTrue(!empty($res));
  108. $this->Model->Behaviors->unload('NumberFormat');
  109. $this->Model->Behaviors->load('Tools.NumberFormat', array('fields'=>array('rel_rate', 'set_rate'), 'localeconv'=>true, 'output'=>true));
  110. $data = array(
  111. 'name' => 'german',
  112. 'set_rate' => '3,11',
  113. 'rel_rate' => '-4,22',
  114. );
  115. $this->Model->create();
  116. $res = $this->Model->save($data);
  117. $this->assertTrue((bool)$res);
  118. $res = $this->Model->find('first', array('conditions' => array('name' => 'german')));
  119. $this->assertTrue(!empty($res));
  120. $this->assertSame(substr($res[$this->Model->alias]['set_rate'], 0, 4), '3,11');
  121. $this->assertSame(substr($res[$this->Model->alias]['rel_rate'], 0, 5), '-4,22');
  122. $res = setlocale(LC_NUMERIC, 'en_US.utf8', 'english');
  123. $this->assertTrue(!empty($res));
  124. $this->Model->Behaviors->unload('NumberFormat');
  125. $this->Model->Behaviors->load('Tools.NumberFormat', array('fields'=>array('rel_rate', 'set_rate'), 'localeconv'=>true, 'output'=>true));
  126. $data = array(
  127. 'name' => 'english',
  128. 'set_rate' => '3.21',
  129. 'rel_rate' => '-4.32',
  130. );
  131. $this->Model->create();
  132. $res = $this->Model->save($data);
  133. $this->assertTrue((bool)$res);
  134. $res = $this->Model->find('first', array('conditions' => array('name' => 'english')));
  135. //debug($res);
  136. $this->assertTrue(!empty($res));
  137. $this->assertSame(substr($res[$this->Model->alias]['set_rate'], 0, 4), '3.21');
  138. $this->assertSame(substr($res[$this->Model->alias]['rel_rate'], 0, 5), '-4.32');
  139. }
  140. public function testMultiply() {
  141. $this->Model->Behaviors->unload('NumberFormat');
  142. $this->Model->Behaviors->load('Tools.NumberFormat', array('fields'=>array('rel_rate', 'set_rate'), 'transform'=>array(), 'multiply'=>0.01, 'output'=>false));
  143. $data = array(
  144. 'name' => 'multiply',
  145. 'set_rate' => '122',
  146. 'rel_rate' => '-2',
  147. );
  148. $this->Model->create();
  149. $res = $this->Model->save($data);
  150. $this->assertTrue((bool)$res);
  151. $res = $this->Model->find('first', array('conditions' => array('name' => 'multiply')));
  152. //debug($res);
  153. $this->assertTrue(!empty($res));
  154. $this->assertSame(substr($res[$this->Model->alias]['set_rate'], 0, 4), '1.22');
  155. $this->assertSame(substr($res[$this->Model->alias]['rel_rate'], 0, 5), '-0.02');
  156. $this->Model->Behaviors->unload('NumberFormat');
  157. $this->Model->Behaviors->load('Tools.NumberFormat', array('fields'=>array('rel_rate', 'set_rate'), 'transform'=>array(), 'multiply'=>0.01, 'output'=>true));
  158. $res = $this->Model->find('first', array('conditions' => array('name' => 'multiply')));
  159. //debug($res);
  160. $this->assertTrue(!empty($res));
  161. $this->assertSame($res[$this->Model->alias]['set_rate'], '122');
  162. $this->assertSame($res[$this->Model->alias]['rel_rate'], '-2');
  163. }
  164. }