kb / tests /units /Action /BaseActionTest.php
Xv Zan
ULFS
e4f4821
<?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'));
}
}