'Array']); $this->engine = Cache::pool('queryCache'); Cache::enable(); } /** * Teardown method * * @return void */ public function tearDown(): void { parent::tearDown(); Cache::drop('queryCache'); } /** * Test fetching with a function to generate the key. * * @return void */ public function testFetchFunctionKey() { $this->engine->set('my_key', 'A winner'); $query = new stdClass(); $cacher = new QueryCacher(function ($q) use ($query) { $this->assertSame($query, $q); return 'my_key'; }, 'queryCache'); $result = $cacher->fetch($query); $this->assertSame('A winner', $result); } /** * Test fetching with a function to generate the key but the function is poop. * * @return void */ public function testFetchFunctionKeyNoString() { $this->expectException(\RuntimeException::class); $this->expectExceptionMessage('Cache key functions must return a string. Got false.'); $this->engine->set('my_key', 'A winner'); $query = new stdClass(); $cacher = new QueryCacher(function ($q) { return false; }, 'queryCache'); $cacher->fetch($query); } /** * Test fetching with a cache instance. * * @return void */ public function testFetchCacheHitStringEngine() { $this->engine->set('my_key', 'A winner'); $cacher = new QueryCacher('my_key', 'queryCache'); $query = new stdClass(); $result = $cacher->fetch($query); $this->assertSame('A winner', $result); } /** * Test fetching with a cache hit. * * @return void */ public function testFetchCacheHit() { $this->engine->set('my_key', 'A winner'); $cacher = new QueryCacher('my_key', $this->engine); $query = new stdClass(); $result = $cacher->fetch($query); $this->assertSame('A winner', $result); } /** * Test fetching with a cache miss. * * @return void */ public function testFetchCacheMiss() { $this->engine->set('my_key', false); $cacher = new QueryCacher('my_key', $this->engine); $query = new stdClass(); $result = $cacher->fetch($query); $this->assertNull($result, 'Cache miss should not have an isset() return.'); } }