mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
MDL-57503 calendar: test external function get action events by course
Part of MDL-55611 epic.
This commit is contained in:
parent
60774b28c3
commit
5e026bb05f
1 changed files with 269 additions and 0 deletions
|
@ -798,4 +798,273 @@ class core_calendar_externallib_testcase extends externallib_advanced_testcase {
|
|||
$this->assertNull($result['firstid']);
|
||||
$this->assertNull($result['lastid']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requesting calendar events from a given course and time should return all
|
||||
* events with a sort time at or after the requested time. All events prior
|
||||
* to that time should not be return.
|
||||
*
|
||||
* If there are no events on or after the given time then an empty result set should
|
||||
* be returned.
|
||||
*/
|
||||
function test_get_calendar_action_events_by_course_after_time() {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$course1 = $this->getDataGenerator()->create_course();
|
||||
$course2 = $this->getDataGenerator()->create_course();
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
|
||||
$instance1 = $generator->create_instance(['course' => $course1->id]);
|
||||
$instance2 = $generator->create_instance(['course' => $course2->id]);
|
||||
$records = [];
|
||||
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course1->id);
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course2->id);
|
||||
$this->resetAfterTest(true);
|
||||
$this->setUser($user);
|
||||
|
||||
for ($i = 1; $i < 19; $i++) {
|
||||
$courseid = ($i < 9) ? $course1->id : $course2->id;
|
||||
$instance = ($i < 9) ? $instance1->id : $instance2->id;
|
||||
$records[] = $this->create_calendar_event(
|
||||
sprintf('Event %d', $i),
|
||||
$user->id,
|
||||
'user',
|
||||
0,
|
||||
1,
|
||||
[
|
||||
'type' => CALENDAR_EVENT_TYPE_ACTION,
|
||||
'courseid' => $courseid,
|
||||
'timesort' => $i,
|
||||
'modulename' => 'assign',
|
||||
'instance' => $instance,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course($course1->id, 5);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertCount(4, $result);
|
||||
$this->assertEquals('Event 5', $result[0]['name']);
|
||||
$this->assertEquals('Event 6', $result[1]['name']);
|
||||
$this->assertEquals('Event 7', $result[2]['name']);
|
||||
$this->assertEquals('Event 8', $result[3]['name']);
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course($course1->id, 9);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requesting calendar events for a course and before a given time should return
|
||||
* all events with a sort time at or before the requested time (inclusive). All
|
||||
* events after that time should not be returned.
|
||||
*
|
||||
* If there are no events before the given time then an empty result set should be
|
||||
* returned.
|
||||
*/
|
||||
function test_get_calendar_action_events_by_course_before_time() {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$course1 = $this->getDataGenerator()->create_course();
|
||||
$course2 = $this->getDataGenerator()->create_course();
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
|
||||
$instance1 = $generator->create_instance(['course' => $course1->id]);
|
||||
$instance2 = $generator->create_instance(['course' => $course2->id]);
|
||||
$records = [];
|
||||
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course1->id);
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course2->id);
|
||||
$this->resetAfterTest(true);
|
||||
$this->setUser($user);
|
||||
|
||||
for ($i = 1; $i < 19; $i++) {
|
||||
$courseid = ($i < 9) ? $course1->id : $course2->id;
|
||||
$instance = ($i < 9) ? $instance1->id : $instance2->id;
|
||||
$records[] = $this->create_calendar_event(
|
||||
sprintf('Event %d', $i),
|
||||
$user->id,
|
||||
'user',
|
||||
0,
|
||||
1,
|
||||
[
|
||||
'type' => CALENDAR_EVENT_TYPE_ACTION,
|
||||
'courseid' => $courseid,
|
||||
'timesort' => $i + 1,
|
||||
'modulename' => 'assign',
|
||||
'instance' => $instance,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course($course1->id, null, 5);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertCount(4, $result);
|
||||
$this->assertEquals('Event 1', $result[0]['name']);
|
||||
$this->assertEquals('Event 2', $result[1]['name']);
|
||||
$this->assertEquals('Event 3', $result[2]['name']);
|
||||
$this->assertEquals('Event 4', $result[3]['name']);
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course($course1->id, null, 1);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requesting calendar events for a course and within a given time range should
|
||||
* return all events with a sort time between the lower and upper time bound
|
||||
* (inclusive).
|
||||
*
|
||||
* If there are no events in the given time range then an empty result set should be
|
||||
* returned.
|
||||
*/
|
||||
function test_get_calendar_action_events_by_course_time_range() {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$course1 = $this->getDataGenerator()->create_course();
|
||||
$course2 = $this->getDataGenerator()->create_course();
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
|
||||
$instance1 = $generator->create_instance(['course' => $course1->id]);
|
||||
$instance2 = $generator->create_instance(['course' => $course2->id]);
|
||||
$records = [];
|
||||
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course1->id);
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course2->id);
|
||||
$this->resetAfterTest(true);
|
||||
$this->setUser($user);
|
||||
|
||||
for ($i = 1; $i < 19; $i++) {
|
||||
$courseid = ($i < 9) ? $course1->id : $course2->id;
|
||||
$instance = ($i < 9) ? $instance1->id : $instance2->id;
|
||||
$records[] = $this->create_calendar_event(
|
||||
sprintf('Event %d', $i),
|
||||
$user->id,
|
||||
'user',
|
||||
0,
|
||||
1,
|
||||
[
|
||||
'type' => CALENDAR_EVENT_TYPE_ACTION,
|
||||
'courseid' => $courseid,
|
||||
'timesort' => $i,
|
||||
'modulename' => 'assign',
|
||||
'instance' => $instance,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course($course1->id, 3, 6);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertCount(4, $result);
|
||||
$this->assertEquals('Event 3', $result[0]['name']);
|
||||
$this->assertEquals('Event 4', $result[1]['name']);
|
||||
$this->assertEquals('Event 5', $result[2]['name']);
|
||||
$this->assertEquals('Event 6', $result[3]['name']);
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course($course1->id, 10, 15);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Requesting calendar events for a course and within a given time range and a limit
|
||||
* and offset should return the number of events up to the given limit value that have
|
||||
* a sort time between the lower and uppper time bound (inclusive) where the result
|
||||
* set is shifted by the offset value.
|
||||
*
|
||||
* If there are no events in the given time range then an empty result set should be
|
||||
* returned.
|
||||
*/
|
||||
function test_get_calendar_action_events_by_course_time_limit_offset() {
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$course1 = $this->getDataGenerator()->create_course();
|
||||
$course2 = $this->getDataGenerator()->create_course();
|
||||
$generator = $this->getDataGenerator()->get_plugin_generator('mod_assign');
|
||||
$instance1 = $generator->create_instance(['course' => $course1->id]);
|
||||
$instance2 = $generator->create_instance(['course' => $course2->id]);
|
||||
$records = [];
|
||||
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course1->id);
|
||||
$this->getDataGenerator()->enrol_user($user->id, $course2->id);
|
||||
$this->resetAfterTest(true);
|
||||
$this->setUser($user);
|
||||
|
||||
for ($i = 1; $i < 19; $i++) {
|
||||
$courseid = ($i < 9) ? $course1->id : $course2->id;
|
||||
$instance = ($i < 9) ? $instance1->id : $instance2->id;
|
||||
$records[] = $this->create_calendar_event(
|
||||
sprintf('Event %d', $i),
|
||||
$user->id,
|
||||
'user',
|
||||
0,
|
||||
1,
|
||||
[
|
||||
'type' => CALENDAR_EVENT_TYPE_ACTION,
|
||||
'courseid' => $courseid,
|
||||
'timesort' => $i,
|
||||
'modulename' => 'assign',
|
||||
'instance' => $instance,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course(
|
||||
$course1->id, 2, 7, $records[2]->id, 2);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertCount(2, $result);
|
||||
$this->assertEquals('Event 4', $result[0]['name']);
|
||||
$this->assertEquals('Event 5', $result[1]['name']);
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course(
|
||||
$course1->id, 2, 7, $records[4]->id, 2);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertCount(2, $result);
|
||||
$this->assertEquals('Event 6', $result[0]['name']);
|
||||
$this->assertEquals('Event 7', $result[1]['name']);
|
||||
|
||||
$result = core_calendar_external::get_calendar_action_events_by_course(
|
||||
$course1->id, 2, 7, $records[6]->id, 2);
|
||||
$result = external_api::clean_returnvalue(
|
||||
core_calendar_external::get_calendar_action_events_by_course_returns(),
|
||||
$result
|
||||
);
|
||||
$result = $result['events'];
|
||||
|
||||
$this->assertEmpty($result);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue