Make sure that no events are fired if nothing have been modified in the task

This commit is contained in:
Frederic Guillot 2016-01-17 17:43:11 -05:00
parent 446a7ac645
commit bcbb329786
3 changed files with 20 additions and 1 deletions

View File

@ -20,6 +20,7 @@ Improvements:
* Remove event subscriber to update date_moved field
* Make sure that some event subscribers are not executed multiple times
* Show rendering time of individual templates when debug mode is enabled
* Make sure that no events are fired if nothing have been modified in the task
Bug fixes:

View File

@ -52,7 +52,7 @@ class TaskModification extends Base
if ($this->isFieldModified('owner_id', $event_data['changes'])) {
$events[] = Task::EVENT_ASSIGNEE_CHANGE;
} else {
} elseif (! empty($event_data['changes'])) {
$events[] = Task::EVENT_CREATE_UPDATE;
$events[] = Task::EVENT_UPDATE;
}

View File

@ -41,6 +41,24 @@ class TaskModificationTest extends Base
$this->assertEquals(1, $event_data['owner_id']);
}
public function testThatNoEventAreFiredWhenNoChanges()
{
$p = new Project($this->container);
$tc = new TaskCreation($this->container);
$tm = new TaskModification($this->container);
$tf = new TaskFinder($this->container);
$this->assertEquals(1, $p->create(array('name' => 'test')));
$this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1)));
$this->container['dispatcher']->addListener(Task::EVENT_CREATE_UPDATE, array($this, 'onCreateUpdate'));
$this->container['dispatcher']->addListener(Task::EVENT_UPDATE, array($this, 'onUpdate'));
$this->assertTrue($tm->update(array('id' => 1, 'title' => 'test')));
$this->assertEmpty($this->container['dispatcher']->getCalledListeners());
}
public function testChangeTitle()
{
$p = new Project($this->container);