/** * Set array of items * If items already exists, they are replaced * * @access public * @param array $items */ public function setItems($items) { $existingItemsKeys = array_flip($this->cacheAdapter->hasItems(array_keys($items))); $existingItems = array_intersect_key($items, $existingItemsKeys); $nonExistingItems = array_diff_key($items, $existingItemsKeys); if (count($existingItems) > 0) { $this->cacheAdapter->replaceItems($existingItems); } if (count($nonExistingItems) > 0) { $this->cacheAdapter->setItems($nonExistingItems); } }
public function testTagable() { if (!$this->_storage instanceof TaggableInterface) { $this->markTestSkipped("Storage doesn't implement TaggableInterface"); } $this->assertSame(array(), $this->_storage->setItems(array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'))); $this->assertTrue($this->_storage->setTags('key1', array('tag1a', 'tag1b'))); $this->assertTrue($this->_storage->setTags('key2', array('tag2a', 'tag2b'))); $this->assertTrue($this->_storage->setTags('key3', array('tag3a', 'tag3b'))); $this->assertFalse($this->_storage->setTags('missing', array('tag'))); // return tags $tags = $this->_storage->getTags('key1'); $this->assertInternalType('array', $tags); sort($tags); $this->assertSame(array('tag1a', 'tag1b'), $tags); // this should remove nothing $this->assertTrue($this->_storage->clearByTags(array('tag1a', 'tag2a'))); $this->assertTrue($this->_storage->hasItem('key1')); $this->assertTrue($this->_storage->hasItem('key2')); $this->assertTrue($this->_storage->hasItem('key3')); // this should remove key1 and key2 $this->assertTrue($this->_storage->clearByTags(array('tag1a', 'tag2b'), true)); $this->assertFalse($this->_storage->hasItem('key1')); $this->assertFalse($this->_storage->hasItem('key2')); $this->assertTrue($this->_storage->hasItem('key3')); // this should remove key3 $this->assertTrue($this->_storage->clearByTags(array('tag3a', 'tag3b'), true)); $this->assertFalse($this->_storage->hasItem('key1')); $this->assertFalse($this->_storage->hasItem('key2')); $this->assertFalse($this->_storage->hasItem('key3')); }
/** * @test */ public function delegatesSetItems() { $keyValuePairs = []; $this->storage->setItems($keyValuePairs)->willReturn(true); $return = $this->cache->setItems($keyValuePairs); $this->assertTrue($return); }
public function testTaggable() { if (!$this->_storage instanceof TaggableInterface) { $this->markTestSkipped("Storage doesn't implement TaggableInterface"); } // store 3 items and register the current default namespace $this->assertSame([], $this->_storage->setItems(['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'])); $this->assertTrue($this->_storage->setTags('key1', ['tag1a', 'tag1b'])); $this->assertTrue($this->_storage->setTags('key2', ['tag2a', 'tag2b'])); $this->assertTrue($this->_storage->setTags('key3', ['tag3a', 'tag3b'])); $this->assertFalse($this->_storage->setTags('missing', ['tag'])); // return tags $tags = $this->_storage->getTags('key1'); $this->assertInternalType('array', $tags); sort($tags); $this->assertSame(['tag1a', 'tag1b'], $tags); // this should remove nothing $this->assertTrue($this->_storage->clearByTags(['tag1a', 'tag2a'])); $this->assertTrue($this->_storage->hasItem('key1')); $this->assertTrue($this->_storage->hasItem('key2')); $this->assertTrue($this->_storage->hasItem('key3')); // this should remove key1 and key2 $this->assertTrue($this->_storage->clearByTags(['tag1a', 'tag2b'], true)); $this->assertFalse($this->_storage->hasItem('key1')); $this->assertFalse($this->_storage->hasItem('key2')); $this->assertTrue($this->_storage->hasItem('key3')); // this should remove key3 $this->assertTrue($this->_storage->clearByTags(['tag3a', 'tag3b'], true)); $this->assertFalse($this->_storage->hasItem('key1')); $this->assertFalse($this->_storage->hasItem('key2')); $this->assertFalse($this->_storage->hasItem('key3')); }
public function testSetItemAndSetItemsCallSaveWithTtl() { $ttl = rand(); $provider = $this->getMock('Doctrine\\Common\\Cache\\ArrayCache'); $provider->expects($this->exactly(4))->method('save')->with($this->anything(), $this->anything(), $ttl); $this->storage = new DoctrineCacheStorage($this->options, $provider); $this->options->setTtl($ttl); $this->storage->setItem('key', 'value'); $items = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'); $this->storage->setItems($items); }
public function testSetGetHasAndRemoveItemsWithNamespace() { $items = array('key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'); $this->_options->setNamespace('defaultns1'); $this->assertSame(array(), $this->_storage->setItems($items)); $this->_options->setNamespace('defaultns2'); $this->assertSame(array(), $this->_storage->hasItems(array_keys($items))); $this->_options->setNamespace('defaultns1'); $rs = $this->_storage->getItems(array_keys($items)); $this->assertInternalType('array', $rs); foreach ($items as $key => $value) { $this->assertArrayHasKey($key, $rs); $this->assertEquals($value, $rs[$key]); } $rs = $this->_storage->hasItems(array_keys($items)); $this->assertInternalType('array', $rs); $this->assertEquals(count($items), count($rs)); foreach ($items as $key => $value) { $this->assertContains($key, $rs); } // remove the first and the last item $this->assertSame(array('missing'), $this->_storage->removeItems(array('missing', 'key1', 'key3'))); unset($items['key1'], $items['key3']); $rs = $this->_storage->getItems(array_keys($items)); $this->assertInternalType('array', $rs); foreach ($items as $key => $value) { $this->assertArrayHasKey($key, $rs); $this->assertEquals($value, $rs[$key]); } $rs = $this->_storage->hasItems(array_keys($items)); $this->assertInternalType('array', $rs); $this->assertEquals(count($items), count($rs)); foreach ($items as $key => $value) { $this->assertContains($key, $rs); } }
public function setItems(array $keyValuePairs) { return $this->storage->setItems($keyValuePairs); }