123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- <?php
- /**
- * Tests timestamp parsing and output.
- */
- class MWTimestampTest extends MediaWikiLangTestCase {
- protected function setUp() {
- parent::setUp();
- // Avoid 'GetHumanTimestamp' hook and others
- $this->setMwGlobals( 'wgHooks', [] );
- }
- /**
- * @dataProvider provideHumanTimestampTests
- * @covers MWTimestamp::getHumanTimestamp
- */
- public function testHumanTimestamp(
- $tsTime, // The timestamp to format
- $currentTime, // The time to consider "now"
- $timeCorrection, // The time offset to use
- $dateFormat, // The date preference to use
- $expectedOutput, // The expected output
- $desc // Description
- ) {
- $user = $this->createMock( User::class );
- $user->expects( $this->any() )
- ->method( 'getOption' )
- ->with( 'timecorrection' )
- ->will( $this->returnValue( $timeCorrection ) );
- $user->expects( $this->any() )
- ->method( 'getDatePreference' )
- ->will( $this->returnValue( $dateFormat ) );
- $tsTime = new MWTimestamp( $tsTime );
- $currentTime = new MWTimestamp( $currentTime );
- $this->assertEquals(
- $expectedOutput,
- $tsTime->getHumanTimestamp( $currentTime, $user ),
- $desc
- );
- }
- public static function provideHumanTimestampTests() {
- return [
- [
- '20111231170000',
- '20120101000000',
- 'Offset|0',
- 'mdy',
- 'Yesterday at 17:00',
- '"Yesterday" across years',
- ],
- [
- '20120717190900',
- '20120717190929',
- 'Offset|0',
- 'mdy',
- 'just now',
- '"Just now"',
- ],
- [
- '20120717190900',
- '20120717191530',
- 'Offset|0',
- 'mdy',
- '6 minutes ago',
- 'X minutes ago',
- ],
- [
- '20121006173100',
- '20121006173200',
- 'Offset|0',
- 'mdy',
- '1 minute ago',
- '"1 minute ago"',
- ],
- [
- '20120617190900',
- '20120717190900',
- 'Offset|0',
- 'mdy',
- 'June 17',
- 'Another month'
- ],
- [
- '19910130151500',
- '20120716193700',
- 'Offset|0',
- 'mdy',
- '15:15, January 30, 1991',
- 'Different year',
- ],
- [
- '20120101050000',
- '20120101080000',
- 'Offset|-360',
- 'mdy',
- 'Yesterday at 23:00',
- '"Yesterday" across years with time correction',
- ],
- [
- '20120714184300',
- '20120716184300',
- 'Offset|-420',
- 'mdy',
- 'Saturday at 11:43',
- 'Recent weekday with time correction',
- ],
- [
- '20120714184300',
- '20120715040000',
- 'Offset|-420',
- 'mdy',
- '11:43',
- 'Today at another time with time correction',
- ],
- [
- '20120617190900',
- '20120717190900',
- 'Offset|0',
- 'dmy',
- '17 June',
- 'Another month with dmy'
- ],
- [
- '20120617190900',
- '20120717190900',
- 'Offset|0',
- 'ISO 8601',
- '06-17',
- 'Another month with ISO-8601'
- ],
- [
- '19910130151500',
- '20120716193700',
- 'Offset|0',
- 'ISO 8601',
- '1991-01-30T15:15:00',
- 'Different year with ISO-8601',
- ],
- ];
- }
- /**
- * @dataProvider provideRelativeTimestampTests
- * @covers MWTimestamp::getRelativeTimestamp
- */
- public function testRelativeTimestamp(
- $tsTime, // The timestamp to format
- $currentTime, // The time to consider "now"
- $timeCorrection, // The time offset to use
- $dateFormat, // The date preference to use
- $expectedOutput, // The expected output
- $desc // Description
- ) {
- $user = $this->createMock( User::class );
- $user->expects( $this->any() )
- ->method( 'getOption' )
- ->with( 'timecorrection' )
- ->will( $this->returnValue( $timeCorrection ) );
- $tsTime = new MWTimestamp( $tsTime );
- $currentTime = new MWTimestamp( $currentTime );
- $this->assertEquals(
- $expectedOutput,
- $tsTime->getRelativeTimestamp( $currentTime, $user ),
- $desc
- );
- }
- public static function provideRelativeTimestampTests() {
- return [
- [
- '20111231170000',
- '20120101000000',
- 'Offset|0',
- 'mdy',
- '7 hours ago',
- '"Yesterday" across years',
- ],
- [
- '20120717190900',
- '20120717190929',
- 'Offset|0',
- 'mdy',
- '29 seconds ago',
- '"Just now"',
- ],
- [
- '20120717190900',
- '20120717191530',
- 'Offset|0',
- 'mdy',
- '6 minutes and 30 seconds ago',
- 'Combination of multiple units',
- ],
- [
- '20121006173100',
- '20121006173200',
- 'Offset|0',
- 'mdy',
- '1 minute ago',
- '"1 minute ago"',
- ],
- [
- '19910130151500',
- '20120716193700',
- 'Offset|0',
- 'mdy',
- '2 decades, 1 year, 168 days, 2 hours, 8 minutes and 48 seconds ago',
- 'A long time ago',
- ],
- [
- '20120101050000',
- '20120101080000',
- 'Offset|-360',
- 'mdy',
- '3 hours ago',
- '"Yesterday" across years with time correction',
- ],
- [
- '20120714184300',
- '20120716184300',
- 'Offset|-420',
- 'mdy',
- '2 days ago',
- 'Recent weekday with time correction',
- ],
- [
- '20120714184300',
- '20120715040000',
- 'Offset|-420',
- 'mdy',
- '9 hours and 17 minutes ago',
- 'Today at another time with time correction',
- ],
- ];
- }
- }
|