2012-11-14 15:21:12 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace SilverStripe\BehatExtension\Context\ClassGuesser;
|
|
|
|
|
|
|
|
use Behat\Behat\Context\ClassGuesser\ClassGuesserInterface;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Module context class guesser.
|
|
|
|
* Provides module context class if found.
|
|
|
|
*/
|
|
|
|
class ModuleContextClassGuesser implements ClassGuesserInterface
|
|
|
|
{
|
2013-10-18 17:00:07 +02:00
|
|
|
private $namespaceSuffix;
|
|
|
|
private $namespaceBase;
|
|
|
|
private $contextClass;
|
2012-11-14 15:21:12 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Initializes guesser.
|
|
|
|
*
|
2013-10-18 17:00:07 +02:00
|
|
|
* @param string $namespaceSuffix
|
2012-11-14 15:21:12 +01:00
|
|
|
*/
|
2013-10-18 17:00:07 +02:00
|
|
|
public function __construct($namespaceSuffix, $contextClass)
|
2012-11-14 15:21:12 +01:00
|
|
|
{
|
2013-10-18 17:00:07 +02:00
|
|
|
$this->namespaceSuffix = $namespaceSuffix;
|
|
|
|
$this->contextClass = $contextClass;
|
2012-11-14 15:21:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets bundle namespace to use for guessing.
|
|
|
|
*
|
|
|
|
* @param string $namespace
|
|
|
|
*/
|
2013-10-18 17:00:07 +02:00
|
|
|
public function setNamespaceBase($namespaceBase)
|
2012-11-14 15:21:12 +01:00
|
|
|
{
|
2013-10-18 17:00:07 +02:00
|
|
|
$this->namespaceBase = $namespaceBase;
|
|
|
|
return $this;
|
2012-11-14 15:21:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Tries to guess context classname.
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function guess()
|
|
|
|
{
|
|
|
|
// Try fully qualified namespace
|
2013-10-18 17:00:07 +02:00
|
|
|
if (class_exists($class = $this->namespaceBase.'\\'.$this->namespaceSuffix.'\\'.$this->contextClass)) {
|
2012-11-14 15:21:12 +01:00
|
|
|
return $class;
|
2016-08-10 03:35:13 +02:00
|
|
|
}
|
2012-11-14 15:21:12 +01:00
|
|
|
// Fall back to namespace with SilverStripe prefix
|
|
|
|
// TODO Remove once core has namespace capabilities for modules
|
2013-10-18 17:00:07 +02:00
|
|
|
if (class_exists($class = 'SilverStripe\\'.$this->namespaceBase.'\\'.$this->namespaceSuffix.'\\'.$this->contextClass)) {
|
2012-11-14 15:21:12 +01:00
|
|
|
return $class;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|