From bd452da4d2bc6636e3eabeef817b3917ae0b293b Mon Sep 17 00:00:00 2001 From: Saleh Hashemi <81674631+salehhashemi1992@users.noreply.github.com> Date: Fri, 27 Oct 2023 22:26:06 +0330 Subject: [PATCH] Add tests for uncovered lines in DbDependency (#20052) --- tests/framework/caching/DbDependencyTest.php | 41 +++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/tests/framework/caching/DbDependencyTest.php b/tests/framework/caching/DbDependencyTest.php index bd801e3528..bb723be3a4 100644 --- a/tests/framework/caching/DbDependencyTest.php +++ b/tests/framework/caching/DbDependencyTest.php @@ -21,7 +21,6 @@ class DbDependencyTest extends DatabaseTestCase */ protected $driverName = 'sqlite'; - /** * {@inheritdoc} */ @@ -39,11 +38,14 @@ class DbDependencyTest extends DatabaseTestCase $db->createCommand()->insert('dependency_item', ['value' => 'initial'])->execute(); } - public function testIsChanged() + public function testQueryOneIsExecutedWhenQueryCacheEnabled() { $db = $this->getConnection(false); $cache = new ArrayCache(); + // Enable the query cache + $db->enableQueryCache = true; + $dependency = new DbDependency(); $dependency->db = $db; $dependency->sql = 'SELECT [[id]] FROM {{dependency_item}} ORDER BY [[id]] DESC LIMIT 1'; @@ -56,4 +58,39 @@ class DbDependencyTest extends DatabaseTestCase $this->assertTrue($dependency->isChanged($cache)); } + + public function testQueryOneIsExecutedWhenQueryCacheDisabled() + { + $db = $this->getConnection(false); + $cache = new ArrayCache(); + + // Disable the query cache + $db->enableQueryCache = false; + + $dependency = new DbDependency(); + $dependency->db = $db; + $dependency->sql = 'SELECT [[id]] FROM {{dependency_item}} ORDER BY [[id]] DESC LIMIT 1'; + $dependency->reusable = false; + + $dependency->evaluateDependency($cache); + $this->assertFalse($dependency->isChanged($cache)); + + $db->createCommand()->insert('dependency_item', ['value' => 'new'])->execute(); + + $this->assertTrue($dependency->isChanged($cache)); + } + + public function testMissingSqlThrowsException() + { + $this->expectException('\yii\base\InvalidConfigException'); + + $db = $this->getConnection(false); + $cache = new ArrayCache(); + + $dependency = new DbDependency(); + $dependency->db = $db; + $dependency->sql = null; + + $dependency->evaluateDependency($cache); + } }