コード例 #1
0
 /**
  * Provides test data for createFromRenderArray().
  *
  * @return array
  */
 public function providerTestCreateFromRenderArray()
 {
     $data = [];
     $empty_metadata = new BubbleableMetadata();
     $nonempty_metadata = new BubbleableMetadata();
     $nonempty_metadata->setCacheContexts(['qux'])->setCacheTags(['foo:bar'])->setAssets(['settings' => ['foo' => 'bar']]);
     $empty_render_array = [];
     $nonempty_render_array = ['#cache' => ['contexts' => ['qux'], 'tags' => ['foo:bar'], 'max-age' => Cache::PERMANENT], '#attached' => ['settings' => ['foo' => 'bar']], '#post_render_cache' => []];
     $data[] = [$empty_render_array, $empty_metadata];
     $data[] = [$nonempty_render_array, $nonempty_metadata];
     return $data;
 }
コード例 #2
0
 public function processOutbound($path, &$options = array(), Request $request = NULL, BubbleableMetadata $bubbleable_metadata = NULL)
 {
     if (array_key_exists('purl_context', $options) && $options['purl_context'] == false) {
         if (count($this->matchedModifiers->getMatched()) && $bubbleable_metadata) {
             $cacheContexts = $bubbleable_metadata->getCacheContexts();
             $cacheContexts[] = 'purl';
             $bubbleable_metadata->setCacheContexts($cacheContexts);
         }
         return $this->contextHelper->processOutbound($this->matchedModifiers->createContexts(Context::EXIT_CONTEXT), $path, $options, $request, $bubbleable_metadata);
     }
     return $this->contextHelper->processOutbound($this->matchedModifiers->createContexts(), $path, $options, $request, $bubbleable_metadata);
 }
コード例 #3
0
 /**
  * Test path prefix language negotiation and outbound path processing.
  *
  * @dataProvider providerTestPathPrefix
  */
 public function testPathPrefix($prefix, $prefixes, $expected_langcode)
 {
     $this->languageManager->expects($this->any())->method('getCurrentLanguage')->will($this->returnValue($this->languages[in_array($expected_langcode, ['en', 'de']) ? $expected_langcode : 'en']));
     $config = $this->getConfigFactoryStub(['language.negotiation' => ['url' => ['source' => LanguageNegotiationUrl::CONFIG_PATH_PREFIX, 'prefixes' => $prefixes]]]);
     $request = Request::create('/' . $prefix . '/foo', 'GET');
     $method = new LanguageNegotiationUrl();
     $method->setLanguageManager($this->languageManager);
     $method->setConfig($config);
     $method->setCurrentUser($this->user);
     $this->assertEquals($expected_langcode, $method->getLangcode($request));
     $cacheability = new BubbleableMetadata();
     $options = [];
     $method->processOutbound('foo', $options, $request, $cacheability);
     $expected_cacheability = new BubbleableMetadata();
     if ($expected_langcode) {
         $this->assertSame($prefix . '/', $options['prefix']);
         $expected_cacheability->setCacheContexts(['languages:' . LanguageInterface::TYPE_URL]);
     } else {
         $this->assertFalse(isset($options['prefix']));
     }
     $this->assertEquals($expected_cacheability, $cacheability);
 }
コード例 #4
0
ファイル: TokenTest.php プロジェクト: sarahwillem/OD8
 /**
  * @covers ::replace
  * @covers ::replace
  */
 public function testReplaceWithHookTokensAlterWithBubbleableMetadata()
 {
     $this->moduleHandler->expects($this->any())->method('invokeAll')->willReturn([]);
     $this->moduleHandler->expects($this->any())->method('alter')->willReturnCallback(function ($hook_name, array &$replacements, array $context, BubbleableMetadata $bubbleable_metadata) {
         $replacements['[node:title]'] = 'hello world';
         $bubbleable_metadata->addCacheContexts(['custom_context']);
         $bubbleable_metadata->addCacheTags(['node:1']);
         $bubbleable_metadata->setCacheMaxAge(10);
     });
     $node = $this->prophesize('Drupal\\node\\NodeInterface');
     $node->getCacheContexts()->willReturn([]);
     $node->getCacheTags()->willReturn([]);
     $node->getCacheMaxAge()->willReturn(14);
     $node = $node->reveal();
     $bubbleable_metadata = new BubbleableMetadata();
     $bubbleable_metadata->setCacheContexts(['current_user']);
     $bubbleable_metadata->setCacheMaxAge(12);
     $result = $this->token->replace('[node:title]', ['node' => $node], [], $bubbleable_metadata);
     $this->assertEquals('hello world', $result);
     $this->assertEquals(['node:1'], $bubbleable_metadata->getCacheTags());
     $this->assertEquals(['current_user', 'custom_context'], $bubbleable_metadata->getCacheContexts());
     $this->assertEquals(10, $bubbleable_metadata->getCacheMaxAge());
 }