pictcode / lib / Cake / Test / Case / View / Helper / TimeHelperTest.php @ 22fd3a57
履歴 | 表示 | アノテート | ダウンロード (4.557 KB)
| 1 | 635eef61 | spyder1211 | <?php
 | 
      
|---|---|---|---|
| 2 | /**
 | 
      ||
| 3 |  * TimeHelperTest file
 | 
      ||
| 4 |  *
 | 
      ||
| 5 |  * CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
 | 
      ||
| 6 |  * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 7 |  *
 | 
      ||
| 8 |  * Licensed under The MIT License
 | 
      ||
| 9 |  * For full copyright and license information, please see the LICENSE.txt
 | 
      ||
| 10 |  * Redistributions of files must retain the above copyright notice
 | 
      ||
| 11 |  *
 | 
      ||
| 12 |  * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 13 |  * @link          http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
 | 
      ||
| 14 |  * @package       Cake.Test.Case.View.Helper
 | 
      ||
| 15 |  * @since         CakePHP(tm) v 1.2.0.4206
 | 
      ||
| 16 |  * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 | 
      ||
| 17 |  */
 | 
      ||
| 18 | |||
| 19 | App::uses('TimeHelper', 'View/Helper');  | 
      ||
| 20 | App::uses('View', 'View');  | 
      ||
| 21 | App::uses('CakeTime', 'Utility');  | 
      ||
| 22 | |||
| 23 | /**
 | 
      ||
| 24 |  * TimeHelperTestObject class
 | 
      ||
| 25 |  *
 | 
      ||
| 26 |  * @package       Cake.Test.Case.View.Helper
 | 
      ||
| 27 |  */
 | 
      ||
| 28 | class TimeHelperTestObject extends TimeHelper {  | 
      ||
| 29 | |||
| 30 | public function attach(CakeTimeMock $cakeTime) {  | 
      ||
| 31 | $this->_engine = $cakeTime;  | 
      ||
| 32 | }  | 
      ||
| 33 | |||
| 34 | public function engine() {  | 
      ||
| 35 | return $this->_engine;  | 
      ||
| 36 | }  | 
      ||
| 37 | |||
| 38 | }  | 
      ||
| 39 | |||
| 40 | /**
 | 
      ||
| 41 |  * CakeTimeMock class
 | 
      ||
| 42 |  *
 | 
      ||
| 43 |  * @package       Cake.Test.Case.View.Helper
 | 
      ||
| 44 |  */
 | 
      ||
| 45 | class CakeTimeMock {  | 
      ||
| 46 | }  | 
      ||
| 47 | |||
| 48 | /**
 | 
      ||
| 49 |  * TimeHelperTest class
 | 
      ||
| 50 |  *
 | 
      ||
| 51 |  * @package       Cake.Test.Case.View.Helper
 | 
      ||
| 52 |  */
 | 
      ||
| 53 | class TimeHelperTest extends CakeTestCase {  | 
      ||
| 54 | |||
| 55 | public $Time = null;  | 
      ||
| 56 | |||
| 57 | public $CakeTime = null;  | 
      ||
| 58 | |||
| 59 | /**
 | 
      ||
| 60 |  * setUp method
 | 
      ||
| 61 |  *
 | 
      ||
| 62 |  * @return void
 | 
      ||
| 63 |  */
 | 
      ||
| 64 | public function setUp() {  | 
      ||
| 65 |                 parent::setUp();
 | 
      ||
| 66 | $this->View = new View(null);  | 
      ||
| 67 | }  | 
      ||
| 68 | |||
| 69 | /**
 | 
      ||
| 70 |  * tearDown method
 | 
      ||
| 71 |  *
 | 
      ||
| 72 |  * @return void
 | 
      ||
| 73 |  */
 | 
      ||
| 74 | public function tearDown() {  | 
      ||
| 75 | unset($this->View);  | 
      ||
| 76 |                 parent::tearDown();
 | 
      ||
| 77 | }  | 
      ||
| 78 | |||
| 79 | /**
 | 
      ||
| 80 |  * test CakeTime class methods are called correctly
 | 
      ||
| 81 |  *
 | 
      ||
| 82 |  * @return void
 | 
      ||
| 83 |  */
 | 
      ||
| 84 | public function testTimeHelperProxyMethodCalls() {  | 
      ||
| 85 | $methods = array(  | 
      ||
| 86 | 'convertSpecifiers', 'convert', 'serverOffset', 'fromString',  | 
      ||
| 87 | 'nice', 'niceShort', 'daysAsSql', 'dayAsSql',  | 
      ||
| 88 | 'isToday', 'isThisMonth', 'isThisYear', 'wasYesterday',  | 
      ||
| 89 | 'isTomorrow', 'toQuarter', 'toUnix', 'toAtom', 'toRSS',  | 
      ||
| 90 | 'wasWithinLast', 'gmt', 'format', 'i18nFormat',  | 
      ||
| 91 | );  | 
      ||
| 92 | $CakeTime = $this->getMock('CakeTimeMock', $methods);  | 
      ||
| 93 | $Time = new TimeHelperTestObject($this->View, array('engine' => 'CakeTimeMock'));  | 
      ||
| 94 | $Time->attach($CakeTime);  | 
      ||
| 95 | foreach ($methods as $method) {  | 
      ||
| 96 | $CakeTime->expects($this->at(0))->method($method);  | 
      ||
| 97 | $Time->{$method}('who', 'what', 'when', 'where', 'how');  | 
      ||
| 98 | }  | 
      ||
| 99 | |||
| 100 | $CakeTime = $this->getMock('CakeTimeMock', array('timeAgoInWords'));  | 
      ||
| 101 | $Time = new TimeHelperTestObject($this->View, array('engine' => 'CakeTimeMock'));  | 
      ||
| 102 | $Time->attach($CakeTime);  | 
      ||
| 103 | $CakeTime->expects($this->at(0))->method('timeAgoInWords');  | 
      ||
| 104 | $Time->timeAgoInWords('who', array('what'), array('when'), array('where'), array('how'));  | 
      ||
| 105 | }  | 
      ||
| 106 | |||
| 107 | /**
 | 
      ||
| 108 |  * test engine override
 | 
      ||
| 109 |  *
 | 
      ||
| 110 |  * @return void
 | 
      ||
| 111 |  */
 | 
      ||
| 112 | public function testEngineOverride() {  | 
      ||
| 113 | App::build(array(  | 
      ||
| 114 | 'Utility' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Utility' . DS)  | 
      ||
| 115 | ), App::REGISTER);  | 
      ||
| 116 | $Time = new TimeHelperTestObject($this->View, array('engine' => 'TestAppEngine'));  | 
      ||
| 117 | $this->assertInstanceOf('TestAppEngine', $Time->engine());  | 
      ||
| 118 | |||
| 119 | App::build(array(  | 
      ||
| 120 | 'Plugin' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS)  | 
      ||
| 121 | ));  | 
      ||
| 122 | CakePlugin::load('TestPlugin');  | 
      ||
| 123 | $Time = new TimeHelperTestObject($this->View, array('engine' => 'TestPlugin.TestPluginEngine'));  | 
      ||
| 124 | $this->assertInstanceOf('TestPluginEngine', $Time->engine());  | 
      ||
| 125 | CakePlugin::unload('TestPlugin');  | 
      ||
| 126 | }  | 
      ||
| 127 | |||
| 128 | /**
 | 
      ||
| 129 |  * Test element wrapping in timeAgoInWords
 | 
      ||
| 130 |  *
 | 
      ||
| 131 |  * @return void
 | 
      ||
| 132 |  */
 | 
      ||
| 133 | public function testTimeAgoInWords() {  | 
      ||
| 134 | $Time = new TimeHelper($this->View);  | 
      ||
| 135 | $timestamp = strtotime('+8 years, +4 months +2 weeks +3 days');  | 
      ||
| 136 | $result = $Time->timeAgoInWords($timestamp, array(  | 
      ||
| 137 | 'end' => '1 years',  | 
      ||
| 138 | 'element' => 'span'  | 
      ||
| 139 | ));  | 
      ||
| 140 | $expected = array(  | 
      ||
| 141 | 'span' => array(  | 
      ||
| 142 | 'title' => $timestamp,  | 
      ||
| 143 | 'class' => 'time-ago-in-words'  | 
      ||
| 144 | ),  | 
      ||
| 145 | 'on ' . date('j/n/y', $timestamp),  | 
      ||
| 146 |                         '/span'
 | 
      ||
| 147 | );  | 
      ||
| 148 | $this->assertTags($result, $expected);  | 
      ||
| 149 | |||
| 150 | $result = $Time->timeAgoInWords($timestamp, array(  | 
      ||
| 151 | 'end' => '1 years',  | 
      ||
| 152 | 'element' => array(  | 
      ||
| 153 | 'title' => 'testing',  | 
      ||
| 154 | 'rel' => 'test'  | 
      ||
| 155 | )  | 
      ||
| 156 | ));  | 
      ||
| 157 | $expected = array(  | 
      ||
| 158 | 'span' => array(  | 
      ||
| 159 | 'title' => 'testing',  | 
      ||
| 160 | 'class' => 'time-ago-in-words',  | 
      ||
| 161 | 'rel' => 'test'  | 
      ||
| 162 | ),  | 
      ||
| 163 | 'on ' . date('j/n/y', $timestamp),  | 
      ||
| 164 |                         '/span'
 | 
      ||
| 165 | );  | 
      ||
| 166 | $this->assertTags($result, $expected);  | 
      ||
| 167 | |||
| 168 | $timestamp = strtotime('+2 weeks');  | 
      ||
| 169 | $result = $Time->timeAgoInWords(  | 
      ||
| 170 |                         $timestamp,
 | 
      ||
| 171 | array('end' => '1 years', 'element' => 'div')  | 
      ||
| 172 | );  | 
      ||
| 173 | $expected = array(  | 
      ||
| 174 | 'div' => array(  | 
      ||
| 175 | 'title' => $timestamp,  | 
      ||
| 176 | 'class' => 'time-ago-in-words'  | 
      ||
| 177 | ),  | 
      ||
| 178 |                         'in 2 weeks',
 | 
      ||
| 179 |                         '/div'
 | 
      ||
| 180 | );  | 
      ||
| 181 | $this->assertTags($result, $expected);  | 
      ||
| 182 | }  | 
      ||
| 183 | |||
| 184 | }  |