public function testChangeStatusEventOnSaveSuccess()
{
$this->model->on(WorkflowEvent::beforeEnterStatus(), function ($event) {
$this->eventsBefore[] = $event;
});
$this->model->on(WorkflowEvent::afterEnterStatus(), function ($event) {
$this->eventsAfter[] = $event;
});
verify('event handler handlers have been called', count($this->eventsBefore) == 0 && count($this->eventsAfter) == 0)->true();
$this->model->enterWorkflow();
verify('current status is set', $this->model->hasWorkflowStatus())->true();
expect('event handler handlers have been called', count($this->eventsBefore) == 1 && count($this->eventsAfter) == 1)->true();
$this->model->status = 'Item04Workflow/B';
verify('save succeeds', $this->model->save())->true();
expect('model has changed to status B', $this->model->getWorkflowStatus()->getId())->equals('Item04Workflow/B');
expect('beforeChangeStatus handler has been called', count($this->eventsBefore))->equals(2);
expect('afterChangeStatus handler has been called', count($this->eventsAfter))->equals(2);
}