コード例 #1
0
 /**
  * @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());
 }
コード例 #2
0
ファイル: PageExecutable.php プロジェクト: pulibrary/recap
 /**
  * {@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;
 }