159 lines
5.2 KiB
PHP
159 lines
5.2 KiB
PHP
<?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'));
|
|
}
|
|
}
|