Generalize ResourceLoader 'excludepage' functionality
[lhc/web/wiklou.git] / tests / phpunit / includes / OutputPageTest.php
index 81bbcd7..a5a7364 100644 (file)
@@ -124,6 +124,47 @@ class OutputPageTest extends MediaWikiTestCase {
                ] );
        }
 
+       public static function provideCdnCacheEpoch() {
+               $base = [
+                       'pageTime' => '2011-04-01T12:00:00+00:00',
+                       'maxAge' => 24 * 3600,
+               ];
+               return [
+                       'after 1s' => [ $base + [
+                               'reqTime' => '2011-04-01T12:00:01+00:00',
+                               'expect' => '2011-04-01T12:00:00+00:00',
+                       ] ],
+                       'after 23h' => [ $base + [
+                               'reqTime' => '2011-04-02T11:00:00+00:00',
+                               'expect' => '2011-04-01T12:00:00+00:00',
+                       ] ],
+                       'after 24h and a bit' => [ $base + [
+                               'reqTime' => '2011-04-02T12:34:56+00:00',
+                               'expect' => '2011-04-01T12:34:56+00:00',
+                       ] ],
+                       'after a year' => [ $base + [
+                               'reqTime' => '2012-05-06T00:12:07+00:00',
+                               'expect' => '2012-05-05T00:12:07+00:00',
+                       ] ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideCdnCacheEpoch
+        */
+       public function testCdnCacheEpoch( $params ) {
+               $out = TestingAccessWrapper::newFromObject( $this->newInstance() );
+               $reqTime = strtotime( $params['reqTime'] );
+               $pageTime = strtotime( $params['pageTime'] );
+               $actual = max( $pageTime, $out->getCdnCacheEpoch( $reqTime, $params['maxAge'] ) );
+
+               $this->assertEquals(
+                       $params['expect'],
+                       gmdate( DateTime::ATOM, $actual ),
+                       'cdn epoch'
+               );
+       }
+
        /**
         * Tests screen requests, without either query parameter set
         * @covers OutputPage::transformCssMedia
@@ -400,11 +441,8 @@ class OutputPageTest extends MediaWikiTestCase {
                $ctx->setLanguage( 'en' );
                $outputPage = $this->getMockBuilder( OutputPage::class )
                        ->setConstructorArgs( [ $ctx ] )
-                       ->setMethods( [ 'isUserCssPreview', 'buildCssLinksArray' ] )
+                       ->setMethods( [ 'buildCssLinksArray' ] )
                        ->getMock();
-               $outputPage->expects( $this->any() )
-                       ->method( 'isUserCssPreview' )
-                       ->willReturn( false );
                $outputPage->expects( $this->any() )
                        ->method( 'buildCssLinksArray' )
                        ->willReturn( [] );