/** * @covers ::selectDisplayVariant */ public function testSelectDisplayVariant() { $display_variant1 = $this->prophesize(VariantInterface::class); $display_variant1->access()->willReturn(FALSE); $display_variant2 = $this->prophesize(PageAwareVariantInterface::class); $display_variant2->access()->willReturn(TRUE); $display_variant2->setExecutable($this->exectuable)->willReturn($display_variant2->reveal()); $this->page->getVariants()->willReturn(['variant1' => $display_variant1->reveal(), 'variant2' => $display_variant2->reveal()]); $this->assertSame($display_variant2->reveal(), $this->exectuable->selectDisplayVariant()); }
/** * {@inheritdoc} */ public function selectDisplayVariant() { if (!$this->selectedDisplayVariant) { foreach ($this->page->getVariants() as $display_variant) { if ($display_variant instanceof ContextAwareVariantInterface) { $display_variant->setContexts($this->getContexts()); } if ($display_variant->access()) { if ($display_variant instanceof PageAwareVariantInterface) { $display_variant->setExecutable($this); } $this->selectedDisplayVariant = $display_variant; break; } } } return $this->selectedDisplayVariant; }