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.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.4 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace yiiunit\framework\base; | 
						|
 | 
						|
use yii\base\Behavior; | 
						|
use yii\base\Component; | 
						|
use yiiunit\TestCase; | 
						|
 | 
						|
class BarClass extends Component | 
						|
{ | 
						|
} | 
						|
 | 
						|
class FooClass extends Component | 
						|
{ | 
						|
	public function behaviors() | 
						|
	{ | 
						|
		return array( | 
						|
			'foo' => __NAMESPACE__ . '\BarBehavior', | 
						|
		); | 
						|
	} | 
						|
} | 
						|
 | 
						|
class BarBehavior extends Behavior | 
						|
{ | 
						|
	public $behaviorProperty = 'behavior property'; | 
						|
 | 
						|
	public function behaviorMethod() | 
						|
	{ | 
						|
		return 'behavior method'; | 
						|
	} | 
						|
} | 
						|
 | 
						|
class BehaviorTest extends TestCase | 
						|
{ | 
						|
	protected function setUp() | 
						|
	{ | 
						|
		parent::setUp(); | 
						|
		$this->mockApplication(); | 
						|
	} | 
						|
 | 
						|
	public function testAttachAndAccessing() | 
						|
	{ | 
						|
		$bar = new BarClass(); | 
						|
		$behavior = new BarBehavior(); | 
						|
		$bar->attachBehavior('bar', $behavior); | 
						|
		$this->assertEquals('behavior property', $bar->behaviorProperty); | 
						|
		$this->assertEquals('behavior method', $bar->behaviorMethod()); | 
						|
		$this->assertEquals('behavior property', $bar->getBehavior('bar')->behaviorProperty); | 
						|
		$this->assertEquals('behavior method', $bar->getBehavior('bar')->behaviorMethod()); | 
						|
 | 
						|
		$behavior = new BarBehavior(array('behaviorProperty' => 'reattached')); | 
						|
		$bar->attachBehavior('bar', $behavior); | 
						|
		$this->assertEquals('reattached', $bar->behaviorProperty); | 
						|
	} | 
						|
 | 
						|
	public function testAutomaticAttach() | 
						|
	{ | 
						|
		$foo = new FooClass(); | 
						|
		$this->assertEquals('behavior property', $foo->behaviorProperty); | 
						|
		$this->assertEquals('behavior method', $foo->behaviorMethod()); | 
						|
	} | 
						|
}
 | 
						|
 |