Neos\Fusion\Tests\Functional\TypoScriptObjects\ContentCacheTest::cacheIdentifierPrototypeCanBeOverwritten PHP Method

cacheIdentifierPrototypeCanBeOverwritten() public method

    public function cacheIdentifierPrototypeCanBeOverwritten()
    {
        $entriesWritten = array();
        $mockCache = $this->createMock(FrontendInterface::class);
        $mockCache->expects($this->any())->method('get')->will($this->returnCallback(function ($entryIdentifier) use($entriesWritten) {
            if (isset($entriesWritten[$entryIdentifier])) {
                return $entriesWritten[$entryIdentifier]['data'];
            } else {
                return false;
            }
        }));
        $mockCache->expects($this->any())->method('has')->will($this->returnCallback(function ($entryIdentifier) use($entriesWritten) {
            if (isset($entriesWritten[$entryIdentifier])) {
                return true;
            } else {
                return false;
            }
        }));
        $mockCache->expects($this->atLeastOnce())->method('set')->will($this->returnCallback(function ($entryIdentifier, $data, $tags, $lifetime) use(&$entriesWritten) {
            if (!isset($entriesWritten[$entryIdentifier])) {
                $entriesWritten[$entryIdentifier] = array('tags' => $tags, 'data' => $data);
            }
        }));
        $this->inject($this->contentCache, 'cache', $mockCache);
        $object = new TestModel(42, 'Object value 1');
        $view = $this->buildView();
        $view->setOption('enableContentCache', true);
        $view->setTypoScriptPath('contentCache/entryIdentifierPrototypeCanBeOverwritten');
        $view->assign('object', $object);
        $view->assign('site', 'site1');
        $firstRenderResult = $view->render();
        $this->assertSame('Cached segment|Object value 1', $firstRenderResult);
        // We overwrote the prototype for cacheIdentifier, so site is not part of the identifier and therefor the same identifier should be created.
        $view->assign('site', 'site2');
        $secondRenderResult = $view->render();
        $this->assertSame($firstRenderResult, $secondRenderResult);
        $this->assertCount(1, $entriesWritten);
        $this->assertEquals(array('21fe7cb71a709292398e766a9bb45662' => array('tags' => array('site1'), 'data' => 'Cached segment|Object value 1')), $entriesWritten);
    }