diff --git a/framework/widgets/FragmentCache.php b/framework/widgets/FragmentCache.php index 78eefd0cfe..2bd66f7c79 100644 --- a/framework/widgets/FragmentCache.php +++ b/framework/widgets/FragmentCache.php @@ -14,6 +14,7 @@ use yii\caching\Dependency; use yii\di\Instance; /** + * FragmentCache is used by [[yii\base\View]] to provide caching of page fragments. * * @property string|boolean $cachedContent The cached content. False is returned if valid content is not found * in the cache. This property is read-only. diff --git a/tests/framework/widgets/FragmentCacheTest.php b/tests/framework/widgets/FragmentCacheTest.php new file mode 100644 index 0000000000..fdaa7a2fbe --- /dev/null +++ b/tests/framework/widgets/FragmentCacheTest.php @@ -0,0 +1,91 @@ +mockWebApplication(); + Yii::$app->set('cache', [ + 'class' => ArrayCache::className(), + ]); + } + + public function testCacheEnabled() + { + $expectedLevel = ob_get_level(); + ob_start(); + ob_implicit_flush(false); + + $view = new View(); + $this->assertTrue($view->beginCache('test')); + echo "cached fragment"; + $view->endCache(); + + ob_start(); + ob_implicit_flush(false); + $this->assertFalse($view->beginCache('test')); + $this->assertEquals("cached fragment", ob_get_clean()); + + ob_end_clean(); + $this->assertEquals($expectedLevel, ob_get_level(), 'Output buffer not closed correctly.'); + } + + public function testCacheDisabled1() + { + $expectedLevel = ob_get_level(); + ob_start(); + ob_implicit_flush(false); + + $view = new View(); + $this->assertTrue($view->beginCache('test', ['enabled' => false])); + echo "cached fragment"; + $view->endCache(); + + ob_start(); + ob_implicit_flush(false); + $this->assertTrue($view->beginCache('test', ['enabled' => false])); + echo "cached fragment"; + $view->endCache(); + $this->assertEquals("cached fragment", ob_get_clean()); + + ob_end_clean(); + $this->assertEquals($expectedLevel, ob_get_level(), 'Output buffer not closed correctly.'); + } + + public function testCacheDisabled2() + { + $expectedLevel = ob_get_level(); + ob_start(); + ob_implicit_flush(false); + + $view = new View(); + $this->assertTrue($view->beginCache('test')); + echo "cached fragment"; + $view->endCache(); + + ob_start(); + ob_implicit_flush(false); + $this->assertTrue($view->beginCache('test', ['enabled' => false])); + echo "cached fragment other"; + $view->endCache(); + $this->assertEquals("cached fragment other", ob_get_clean()); + + ob_end_clean(); + $this->assertEquals($expectedLevel, ob_get_level(), 'Output buffer not closed correctly.'); + } + + + // TODO test dynamic replacements +}