| <?php |
|
|
| require_once __DIR__.'/../Base.php'; |
|
|
| use Kanboard\Event\GenericEvent; |
|
|
| class DummyAction extends Kanboard\Action\Base |
| { |
| public function getDescription() |
| { |
| return 'Dummy Action'; |
| } |
|
|
| public function getCompatibleEvents() |
| { |
| return array('my.event'); |
| } |
|
|
| public function getActionRequiredParameters() |
| { |
| return array('p1' => 'Param 1'); |
| } |
|
|
| public function getEventRequiredParameters() |
| { |
| return array('p1', 'p2', 'p3' => array('p4')); |
| } |
|
|
| public function doAction(array $data) |
| { |
| return true; |
| } |
|
|
| public function hasRequiredCondition(array $data) |
| { |
| return $data['p1'] == $this->getParam('p1'); |
| } |
| } |
|
|
| class BaseActionTest extends Base |
| { |
| public function testGetName() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertEquals('\\DummyAction', $dummyAction->getName()); |
| } |
|
|
| public function testGetDescription() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertEquals('Dummy Action', $dummyAction->getDescription()); |
| } |
|
|
| public function testGetActionRequiredParameters() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertEquals(array('p1' => 'Param 1'), $dummyAction->getActionRequiredParameters()); |
| } |
|
|
| public function testGetEventRequiredParameters() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertEquals(array('p1', 'p2', 'p3' => array('p4')), $dummyAction->getEventRequiredParameters()); |
| } |
|
|
| public function testGetCompatibleEvents() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertEquals(array('my.event'), $dummyAction->getCompatibleEvents()); |
| } |
|
|
| public function testHasRequiredCondition() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $dummyAction->setParam('p1', 123); |
| $this->assertTrue($dummyAction->hasRequiredCondition(array('p1' => 123))); |
| $this->assertFalse($dummyAction->hasRequiredCondition(array('p1' => 456))); |
| } |
|
|
| public function testProjectId() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertInstanceOf('DummyAction', $dummyAction->setProjectId(123)); |
| $this->assertEquals(123, $dummyAction->getProjectId()); |
| } |
|
|
| public function testParam() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertInstanceOf('DummyAction', $dummyAction->setParam('p1', 123)); |
| $this->assertEquals(123, $dummyAction->getParam('p1')); |
| } |
|
|
| public function testHasCompatibleEvents() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $this->assertTrue($dummyAction->hasCompatibleEvent('my.event')); |
| $this->assertFalse($dummyAction->hasCompatibleEvent('foobar')); |
| } |
|
|
| public function testHasRequiredProject() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $dummyAction->setProjectId(1234); |
|
|
| $this->assertTrue($dummyAction->hasRequiredProject(array('project_id' => 1234))); |
| $this->assertFalse($dummyAction->hasRequiredProject(array('project_id' => 1))); |
| $this->assertFalse($dummyAction->hasRequiredProject(array())); |
| } |
|
|
| public function testHasRequiredParameters() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $dummyAction->setProjectId(1234); |
|
|
| $this->assertTrue($dummyAction->hasRequiredParameters(array('p1' => 12, 'p2' => 34, 'p3' => array('p4' => 'foobar')))); |
| $this->assertFalse($dummyAction->hasRequiredParameters(array('p1' => 12))); |
| $this->assertFalse($dummyAction->hasRequiredParameters(array())); |
| } |
|
|
| public function testAddEvent() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $dummyAction->addEvent('foobar', 'FooBar'); |
| $dummyAction->addEvent('my.event', 'My Event Overrided'); |
|
|
| $events = $dummyAction->getEvents(); |
| $this->assertCount(2, $events); |
| $this->assertEquals(array('my.event', 'foobar'), $events); |
| } |
|
|
| public function testExecuteOnlyOnce() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $dummyAction->setProjectId(1234); |
| $dummyAction->setParam('p1', 'something'); |
| $dummyAction->addEvent('foobar', 'FooBar'); |
|
|
| $event = new GenericEvent(array('project_id' => 1234, 'p1' => 'something', 'p2' => 'abc', 'p3' => array('p4' => 'a'))); |
|
|
| $this->assertTrue($dummyAction->execute($event, 'foobar')); |
| $this->assertFalse($dummyAction->execute($event, 'foobar')); |
| } |
|
|
| public function testExecuteSameActionSeveralTimesWithDifferentEvents() |
| { |
| $dummyAction = new DummyAction($this->container); |
| $dummyAction->setProjectId(1234); |
| $dummyAction->setParam('p1', 'something'); |
| $dummyAction->addEvent('foobar', 'FooBar'); |
|
|
| $event1 = new GenericEvent(array('project_id' => 1234, 'p1' => 'something', 'p2' => 'abc', 'p3' => array('p4' => 'a'))); |
| $event2 = new GenericEvent(array('project_id' => 1234, 'p1' => 'something', 'p2' => 'abc', 'p3' => array('p4' => 'b'))); |
|
|
| $this->assertTrue($dummyAction->execute($event1, 'foobar')); |
| $this->assertTrue($dummyAction->execute($event2, 'foobar')); |
| } |
| } |
|
|