Security update for Core, with self-updated composer
[yaffs-website] / vendor / doctrine / cache / tests / Doctrine / Tests / Common / Cache / CacheProviderTest.php
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheProviderTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheProviderTest.php
new file mode 100644 (file)
index 0000000..5e11652
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+
+namespace Doctrine\Tests\Common\Cache;
+
+class CacheProviderTest extends \Doctrine\Tests\DoctrineTestCase
+{
+    public function testFetchMultiWillFilterNonRequestedKeys()
+    {
+        /* @var $cache \Doctrine\Common\Cache\CacheProvider|\PHPUnit_Framework_MockObject_MockObject */
+        $cache = $this->getMockForAbstractClass(
+            'Doctrine\Common\Cache\CacheProvider',
+            array(),
+            '',
+            true,
+            true,
+            true,
+            array('doFetchMultiple')
+        );
+
+        $cache
+            ->expects($this->once())
+            ->method('doFetchMultiple')
+            ->will($this->returnValue(array(
+                '[foo][1]' => 'bar',
+                '[bar][1]' => 'baz',
+                '[baz][1]' => 'tab',
+            )));
+
+        $this->assertEquals(
+            array('foo' => 'bar', 'bar' => 'baz'),
+            $cache->fetchMultiple(array('foo', 'bar'))
+        );
+    }
+
+    public function testFailedDeleteAllDoesNotChangeNamespaceVersion()
+    {
+        /* @var $cache \Doctrine\Common\Cache\CacheProvider|\PHPUnit_Framework_MockObject_MockObject */
+        $cache = $this->getMockForAbstractClass(
+            'Doctrine\Common\Cache\CacheProvider',
+            array(),
+            '',
+            true,
+            true,
+            true,
+            array('doFetch', 'doSave', 'doContains')
+        );
+
+        $cache
+            ->expects($this->once())
+            ->method('doFetch')
+            ->with('DoctrineNamespaceCacheKey[]')
+            ->will($this->returnValue(false));
+
+        // doSave is only called once from deleteAll as we do not need to persist the default version in getNamespaceVersion()
+        $cache
+            ->expects($this->once())
+            ->method('doSave')
+            ->with('DoctrineNamespaceCacheKey[]')
+            ->will($this->returnValue(false));
+
+        // After a failed deleteAll() the local namespace version is not increased (still 1). Otherwise all data written afterwards
+        // would be lost outside the current instance.
+        $cache
+            ->expects($this->once())
+            ->method('doContains')
+            ->with('[key][1]')
+            ->will($this->returnValue(true));
+
+        $this->assertFalse($cache->deleteAll(), 'deleteAll() returns false when saving the namespace version fails');
+        $cache->contains('key');
+    }
+
+    public function testSaveMultipleNoFail()
+    {
+        /* @var $cache \Doctrine\Common\Cache\CacheProvider|\PHPUnit_Framework_MockObject_MockObject */
+        $cache = $this->getMockForAbstractClass(
+            'Doctrine\Common\Cache\CacheProvider',
+            array(),
+            '',
+            true,
+            true,
+            true,
+            array('doSave')
+        );
+
+        $cache
+            ->expects($this->at(1))
+            ->method('doSave')
+            ->with('[kerr][1]', 'verr', 0)
+            ->will($this->returnValue(false));
+
+        $cache
+            ->expects($this->at(2))
+            ->method('doSave')
+            ->with('[kok][1]', 'vok', 0)
+            ->will($this->returnValue(true));
+
+        $cache->saveMultiple(array(
+            'kerr'  => 'verr',
+            'kok'   => 'vok',
+        ));
+    }
+}