+ // Reason inheritance edge case: first reason is kept.
+ $access = $forbidden->orIf($forbidden_other);
+ $this->assertEquals('forbidden message', $access->getReason());
+ $access = $forbidden_other->orIf($forbidden);
+ $this->assertEquals('other forbidden message', $access->getReason());
+ // Reason inheritance edge case: one of the operands is reasonless.
+ $access = $forbidden->orIf($forbidden_reasonless);
+ $this->assertEquals('forbidden message', $access->getReason());
+ $access = $forbidden_reasonless->orIf($forbidden);
+ $this->assertEquals('forbidden message', $access->getReason());
+ $access = $forbidden_reasonless->orIf($forbidden_reasonless);
+ $this->assertNull($access->getReason());