Qiang Xue
11 years ago
4 changed files with 229 additions and 4 deletions
@ -0,0 +1,93 @@
|
||||
<?php |
||||
/** |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
namespace yiiunit\framework\base; |
||||
|
||||
use yii\base\Component; |
||||
use yii\base\Event; |
||||
use yiiunit\TestCase; |
||||
|
||||
/** |
||||
* @author Qiang Xue <qiang.xue@gmail.com> |
||||
* @since 2.0 |
||||
*/ |
||||
class EventTest extends TestCase |
||||
{ |
||||
public $counter; |
||||
|
||||
public function setUp() |
||||
{ |
||||
$this->counter = 0; |
||||
Event::off(ActiveRecord::className(), 'save'); |
||||
Event::off(Post::className(), 'save'); |
||||
Event::off(User::className(), 'save'); |
||||
} |
||||
|
||||
public function testOn() |
||||
{ |
||||
Event::on(Post::className(), 'save', function ($event) { |
||||
$this->counter += 1; |
||||
}); |
||||
Event::on(ActiveRecord::className(), 'save', function ($event) { |
||||
$this->counter += 3; |
||||
}); |
||||
$this->assertEquals(0, $this->counter); |
||||
$post = new Post; |
||||
$post->save(); |
||||
$this->assertEquals(4, $this->counter); |
||||
$user = new User; |
||||
$user->save(); |
||||
$this->assertEquals(7, $this->counter); |
||||
} |
||||
|
||||
public function testOff() |
||||
{ |
||||
$handler = function ($event) { |
||||
$this->counter ++; |
||||
}; |
||||
$this->assertFalse(Event::hasHandlers(Post::className(), 'save')); |
||||
Event::on(Post::className(), 'save', $handler); |
||||
$this->assertTrue(Event::hasHandlers(Post::className(), 'save')); |
||||
Event::off(Post::className(), 'save', $handler); |
||||
$this->assertFalse(Event::hasHandlers(Post::className(), 'save')); |
||||
} |
||||
|
||||
public function testHasHandlers() |
||||
{ |
||||
$this->assertFalse(Event::hasHandlers(Post::className(), 'save')); |
||||
$this->assertFalse(Event::hasHandlers(ActiveRecord::className(), 'save')); |
||||
Event::on(Post::className(), 'save', function ($event) { |
||||
$this->counter += 1; |
||||
}); |
||||
$this->assertTrue(Event::hasHandlers(Post::className(), 'save')); |
||||
$this->assertFalse(Event::hasHandlers(ActiveRecord::className(), 'save')); |
||||
|
||||
$this->assertFalse(Event::hasHandlers(User::className(), 'save')); |
||||
Event::on(ActiveRecord::className(), 'save', function ($event) { |
||||
$this->counter += 1; |
||||
}); |
||||
$this->assertTrue(Event::hasHandlers(User::className(), 'save')); |
||||
$this->assertTrue(Event::hasHandlers(ActiveRecord::className(), 'save')); |
||||
} |
||||
} |
||||
|
||||
class ActiveRecord extends Component |
||||
{ |
||||
public function save() |
||||
{ |
||||
$this->trigger('save'); |
||||
} |
||||
} |
||||
|
||||
class Post extends ActiveRecord |
||||
{ |
||||
} |
||||
|
||||
class User extends ActiveRecord |
||||
{ |
||||
|
||||
} |
Loading…
Reference in new issue