MDL-58087 core_calendar: Event mapper learned to map to stdClass and array

Part of MDL-55611 epic.
This commit is contained in:
Cameron Ball
2017-04-03 11:37:09 +08:00
committed by Damyon Wiese
parent 4477520e5a
commit 6d82ef49ea
3 changed files with 72 additions and 5 deletions
@@ -85,7 +85,21 @@ class event_mapper implements event_mapper_interface {
$action = ($event instanceof action_event_interface) ? $event->get_action() : null;
$timeduration = $event->get_times()->get_end_time()->getTimestamp() - $event->get_times()->get_start_time()->getTimestamp();
return new event((object) [
return new event($this->from_event_to_stdclass($event));
}
public function from_event_to_stdclass(event_interface $event) {
$action = ($event instanceof action_event_interface) ? $event->get_action() : null;
$timeduration = $event->get_times()->get_end_time()->getTimestamp() - $event->get_times()->get_start_time()->getTimestamp();
return (object)$this->from_event_to_assoc_array($event);
}
public function from_event_to_assoc_array(event_interface $event) {
$action = ($event instanceof action_event_interface) ? $event->get_action() : null;
$timeduration = $event->get_times()->get_end_time()->getTimestamp() - $event->get_times()->get_start_time()->getTimestamp();
return [
'id' => $event->get_id(),
'name' => $event->get_name(),
'description' => $event->get_description()->get_value(),
@@ -94,8 +108,8 @@ class event_mapper implements event_mapper_interface {
'groupid' => $event->get_group() ? $event->get_group()->get_id() : null,
'userid' => $event->get_user() ? $event->get_user()->get_id() : null,
'repeatid' => $event->get_repeats()->get_id(),
'modulename' => $event->get_course_module()->get('modname'),
'instance' => $event->get_course_module()->get('instance'),
'modulename' => $event->get_course_module() ? $event->get_course_module()->get('modname') : null,
'instance' => $event->get_course_module() ? $event->get_course_module()->get('instance') : null,
'eventtype' => $event->get_type(),
'timestart' => $event->get_times()->get_start_time()->getTimestamp(),
'timeduration' => $timeduration,
@@ -106,7 +120,8 @@ class event_mapper implements event_mapper_interface {
'actionname' => $action ? $action->get_name() : null,
'actionurl' => $action ? $action->get_url() : null,
'actionnum' => $action ? $action->get_item_count() : null,
'actionactionable' => $action ? $action->is_actionable() : null
]);
'actionactionable' => $action ? $action->is_actionable() : null,
'sequence' => 1
];
}
}
@@ -51,4 +51,20 @@ interface event_mapper_interface {
* @return event The mapped legacy event.
*/
public function from_event_to_legacy_event(event_interface $event);
/**
* Map an event to a stdClass
*
* @param event_interface $event The legacy event.
* @return \stdClass The mapped stdClass.
*/
public function from_event_to_stdclass(event_interface $event);
/**
* Map an event to an associative array.
*
* @param event_interface $event The legacy event.
* @return array The mapped legacy event array.
*/
public function from_event_to_assoc_array(event_interface $event);
}
+36
View File
@@ -71,6 +71,42 @@ class core_calendar_event_mapper_testcase extends advanced_testcase {
$this->assertInstanceOf(event::class, $legacyevent);
}
/**
* Test event -> stdClass
*/
public function test_from_event_to_stdclass() {
$this->resetAfterTest(true);
$this->setAdminUser();
$legacyevent = $this->create_event(['modname' => 'assign', 'instance' => 1]);
$event = new event_mapper_test_event($legacyevent);
$mapper = new event_mapper(
new event_mapper_test_event_factory()
);
$obj = $mapper->from_event_to_stdclass($event);
$this->assertInstanceOf(\stdClass::class, $obj);
$this->assertEquals($obj->name, $event->get_name());
$this->assertEquals($obj->eventtype, $event->get_type());
$this->assertEquals($obj->timestart, $event->get_times()->get_start_time()->getTimestamp());
}
/**
* Test event -> array
*/
public function test_from_event_to_assoc_array() {
$this->resetAfterTest(true);
$this->setAdminUser();
$legacyevent = $this->create_event(['modname' => 'assign', 'instance' => 1]);
$event = new event_mapper_test_event($legacyevent);
$mapper = new event_mapper(
new event_mapper_test_event_factory()
);
$arr = $mapper->from_event_to_assoc_array($event);
$this->assertTrue(is_array($arr));
$this->assertEquals($arr['name'], $event->get_name());
$this->assertEquals($arr['eventtype'], $event->get_type());
$this->assertEquals($arr['timestart'], $event->get_times()->get_start_time()->getTimestamp());
}
public function test_from_action_event_to_legacy_event() {
$this->resetAfterTest(true);
$this->setAdminUser();