You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							2.1 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace yii\codeception; | 
						|
 | 
						|
use Yii; | 
						|
use yii\base\Component; | 
						|
use yii\base\InvalidConfigException; | 
						|
 | 
						|
/** | 
						|
 * BasePage is the base class for page classes that represent Web pages to be tested. | 
						|
 * | 
						|
 * @property string $url the URL to this page | 
						|
 * | 
						|
 * @author Mark Jebri <mark.github@yandex.ru> | 
						|
 * @since 2.0 | 
						|
 */ | 
						|
abstract class BasePage extends Component | 
						|
{ | 
						|
	/** | 
						|
	 * @var string|array the route (controller ID and action ID, e.g. `site/about`) to this page. | 
						|
	 * Use array to represent a route with GET parameters. The first element of the array represents | 
						|
	 * the route and the rest of the name-value pairs are treated as GET parameters, e.g. `array('site/page', 'name' => 'about')`. | 
						|
	 */ | 
						|
	public $route; | 
						|
	/** | 
						|
	 * @var \Codeception\AbstractGuy the testing guy object | 
						|
	 */ | 
						|
	protected $guy; | 
						|
 | 
						|
	/** | 
						|
	 * Constructor. | 
						|
	 * @param \Codeception\AbstractGuy the testing guy object | 
						|
	 */ | 
						|
	public function __construct($I) | 
						|
	{ | 
						|
		$this->guy = $I; | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * Returns the URL to this page. | 
						|
	 * The URL will be returned by calling the URL manager of the application | 
						|
	 * with [[route]] and the provided parameters. | 
						|
	 * @param array $params the GET parameters for creating the URL | 
						|
	 * @return string the URL to this page | 
						|
	 * @throws InvalidConfigException if [[route]] is not set or invalid | 
						|
	 */ | 
						|
	public function getUrl($params = []) | 
						|
	{ | 
						|
		if (is_string($this->route)) { | 
						|
			return Yii::$app->getUrlManager()->createUrl($this->route, $params); | 
						|
		} elseif (is_array($this->route) && isset($this->route[0])) { | 
						|
			$route = $this->route[0]; | 
						|
			$ps = $this->route; | 
						|
			unset($this->route[0]); | 
						|
			return Yii::$app->getUrlManager()->createUrl($route, array_merge($ps, $params)); | 
						|
		} else { | 
						|
			throw new InvalidConfigException('The "route" property must be set.'); | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * Creates a page instance and sets the test guy to use [[url]]. | 
						|
	 * @param \Codeception\AbstractGuy $I the test guy instance | 
						|
	 * @param array $params the GET parameters to be used to generate [[url]] | 
						|
	 * @return static the page instance | 
						|
	 */ | 
						|
	public static function openBy($I, $params = []) | 
						|
	{ | 
						|
		$page = new static($I); | 
						|
		$I->amOnPage($page->getUrl($params)); | 
						|
		return $page; | 
						|
	} | 
						|
}
 | 
						|
 |