diff --git a/src/Database/Table/GroupedSelection.php b/src/Database/Table/GroupedSelection.php index e6ae366ba..badc169ee 100644 --- a/src/Database/Table/GroupedSelection.php +++ b/src/Database/Table/GroupedSelection.php @@ -134,7 +134,7 @@ protected function execute() $accessedColumns = $this->accessedColumns; $this->loadRefCache(); - if (!isset($this->refCacheCurrent['data'])) { + if (!isset($this->refCacheCurrent['data']) || $this->rows === NULL) { // we have not fetched any data yet => init accessedColumns by cached accessedColumns $this->accessedColumns = $accessedColumns; diff --git a/tests/Database/Table/Table.cache.observer.phpt b/tests/Database/Table/Table.cache.observer.phpt index c6036b546..9e8f84d91 100644 --- a/tests/Database/Table/Table.cache.observer.phpt +++ b/tests/Database/Table/Table.cache.observer.phpt @@ -5,6 +5,7 @@ * @dataProvider? ../databases.ini */ +use Nette\Caching\Storages\MemoryStorage; use Tester\Assert; use Nette\Database\ResultSet; @@ -13,11 +14,12 @@ require __DIR__ . '/../connect.inc.php'; // create $connection Nette\Database\Helpers::loadFromFile($connection, __DIR__ . "/../files/{$driverName}-nette_test1.sql"); -$cacheStorage = Mockery::mock('Nette\Caching\Istorage'); -$cacheStorage->shouldReceive('read')->withAnyArgs()->once()->andReturn(array('id' => TRUE)); -$cacheStorage->shouldReceive('read')->withAnyArgs()->times(4)->andReturn(array('id' => TRUE, 'author_id' => TRUE)); -$cacheStorage->shouldReceive('write')->with(Mockery::any(), array('id' => TRUE, 'author_id' => TRUE, 'title' => TRUE), array()); +class CacheMock extends MemoryStorage +{ +} + +$cacheStorage = new CacheMock; $context = new Nette\Database\Context($connection, $structure, $conventions, $cacheStorage); $queries = 0; @@ -39,5 +41,5 @@ unset($book, $author); foreach ($stack as $selection) $selection->__destruct(); $authors->__destruct(); -Assert::same(3, $queries); +Assert::same(2, $queries); Mockery::close();