Skip to content
This repository has been archived by the owner on Apr 5, 2018. It is now read-only.

Commit

Permalink
Added unit tests for audit log category service
Browse files Browse the repository at this point in the history
  • Loading branch information
Bob Olde Hampsink committed Feb 24, 2016
1 parent 18e76c6 commit 1630dd5
Show file tree
Hide file tree
Showing 2 changed files with 481 additions and 72 deletions.
163 changes: 91 additions & 72 deletions services/AuditLog_CategoryService.php
Expand Up @@ -27,114 +27,133 @@ class AuditLog_CategoryService extends BaseApplicationComponent
*
* @var array
*/
public $after = array();
public $after = array();

/**
* Initialize the category saving/deleting events.
*
* @codeCoverageIgnore
*/
public function log()
{

// Get values before saving
craft()->on('categories.onBeforeSaveCategory', function (Event $event) {

// Get category id to save
$id = $event->params['category']->id;

if (!$event->params['isNewCategory']) {
craft()->on('categories.onBeforeSaveCategory', array($this, 'onBeforeSaveCategory'));

// Get old category from db
$category = CategoryModel::populateModel(CategoryRecord::model()->findById($id));

// Get fields
craft()->auditLog_category->before = craft()->auditLog_category->fields($category);
} else {
// Get values after saving
craft()->on('categories.onSaveCategory', array($this, 'onSaveCategory'));

// Get fields
craft()->auditLog_category->before = craft()->auditLog_category->fields($event->params['category'], true);
}
// Get values before deleting
craft()->on('categories.onBeforeDeleteCategory', array($this, 'onBeforeDeleteCategory'));
}

});
/**
* Handle the onBeforeSaveCategory event.
*
* @param Event $event
*/
public function onBeforeSaveCategory(Event $event)
{
// Get category id to save
$id = $event->params['category']->id;

// Get values after saving
craft()->on('categories.onSaveCategory', function (Event $event) {
if (!$event->params['isNewCategory']) {

// Get saved category
$category = $event->params['category'];
// Get old category from db
$category = CategoryModel::populateModel(CategoryRecord::model()->findById($id));

// Get fields
craft()->auditLog_category->after = craft()->auditLog_category->fields($category);
$this->before = $this->fields($category);
} else {

// New row
$log = new AuditLogRecord();
// Get fields
$this->before = $this->fields($event->params['category'], true);
}
}

// Get user
$user = craft()->userSession->getUser();
/**
* Handle the onSaveCategory event.
*
* @param Event $event
*/
public function onSaveCategory(Event $event)
{
// Get saved category
$category = $event->params['category'];

// Set user id
$log->userId = $user ? $user->id : null;
// Get fields
$this->after = $this->fields($category);

// Set element type
$log->type = ElementType::Category;
// New row
$log = new AuditLogRecord();

// Set origin
$log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger').'/'.craft()->request->path : craft()->request->path;
// Get user
$user = craft()->userSession->getUser();

// Set before
$log->before = craft()->auditLog_category->before;
// Set user id
$log->userId = $user ? $user->id : null;

// Set after
$log->after = craft()->auditLog_category->after;
// Set element type
$log->type = ElementType::Category;

// Set status
$log->status = ($event->params['isNewCategory'] ? AuditLogModel::CREATED : AuditLogModel::MODIFIED);
// Set origin
$log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger').'/'.craft()->request->path : craft()->request->path;

// Save row
$log->save(false);
// Set before
$log->before = $this->before;

// Callback
craft()->auditLog->elementHasChanged(ElementType::Category, $category->id, craft()->auditLog_category->before, craft()->auditLog_category->after);
// Set after
$log->after = $this->after;

});
// Set status
$log->status = ($event->params['isNewCategory'] ? AuditLogModel::CREATED : AuditLogModel::MODIFIED);

// Get values before deleting
craft()->on('categories.onBeforeDeleteCategory', function (Event $event) {
// Save row
$log->save(false);

// Get deleted category
$category = $event->params['category'];
// Callback
craft()->auditLog->elementHasChanged(ElementType::Category, $category->id, $this->before, $this->after);
}

// Get fields
craft()->auditLog_category->before = craft()->auditLog_category->fields($category);
craft()->auditLog_category->after = craft()->auditLog_category->fields($category, true);
/**
* Handle the onBeforeDeleteCategory event.
*
* @param Event $event
*/
public function onBeforeDeleteCategory(Event $event)
{
// Get deleted category
$category = $event->params['category'];

// New row
$log = new AuditLogRecord();
// Get fields
$this->before = $this->fields($category);
$this->after = $this->fields($category, true);

// Set user id
$log->userId = craft()->userSession->getUser()->id;
// New row
$log = new AuditLogRecord();

// Set element type
$log->type = ElementType::Category;
// Set user id
$log->userId = craft()->userSession->getUser()->id;

// Set origin
$log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger').'/'.craft()->request->path : craft()->request->path;
// Set element type
$log->type = ElementType::Category;

// Set before
$log->before = craft()->auditLog_category->before;
// Set origin
$log->origin = craft()->request->isCpRequest() ? craft()->config->get('cpTrigger').'/'.craft()->request->path : craft()->request->path;

// Set after
$log->after = craft()->auditLog_category->after;
// Set before
$log->before = $this->before;

// Set status
$log->status = AuditLogModel::DELETED;
// Set after
$log->after = $this->after;

// Save row
$log->save(false);
// Set status
$log->status = AuditLogModel::DELETED;

// Callback
craft()->auditLog->elementHasChanged(ElementType::Category, $category->id, craft()->auditLog_category->before, craft()->auditLog_category->after);
// Save row
$log->save(false);

});
// Callback
craft()->auditLog->elementHasChanged(ElementType::Category, $category->id, $this->before, $this->after);
}

/**
Expand All @@ -156,11 +175,11 @@ public function fields(CategoryModel $category, $empty = false)
),
'title' => array(
'label' => Craft::t('Title'),
'value' => $category->title,
'value' => (string) $category->getTitle(),
),
'group' => array(
'label' => Craft::t('Group'),
'value' => $category->group->name,
'value' => (string) $category->getGroup(),
),
);

Expand Down

0 comments on commit 1630dd5

Please sign in to comment.