From 2531eafdb4475c59c8d2eb3ca44d3a15ae88abc2 Mon Sep 17 00:00:00 2001 From: Tim Lock Date: Sun, 24 Aug 2014 18:15:21 +0930 Subject: [PATCH] Fixed non-js behat tests for 2.7 --- classes/event/attendance_taken_by_student.php | 104 ++++++++++++++++++ lang/en/attendance.php | 3 +- locallib.php | 2 +- tests/behat/attendance_mod.feature | 4 +- tests/behat/attendance_taken_by_student.php | 104 ++++++++++++++++++ 5 files changed, 213 insertions(+), 4 deletions(-) create mode 100644 classes/event/attendance_taken_by_student.php create mode 100644 tests/behat/attendance_taken_by_student.php diff --git a/classes/event/attendance_taken_by_student.php b/classes/event/attendance_taken_by_student.php new file mode 100644 index 0000000..cabfecf --- /dev/null +++ b/classes/event/attendance_taken_by_student.php @@ -0,0 +1,104 @@ +. + +/** + * This file contains an event for when an attendance is taken. + * + * @package mod_attendance + * @copyright 2014 onwards Dan Marsden + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_attendance\event; +defined('MOODLE_INTERNAL') || die(); + +/** + * Event for when an attendance is taken. + * + * @property-read array $other { + * Extra information about event properties. + * + * @string mode Mode of the report viewed. + * } + * @package mod_attendance + * @since Moodle 2.7 + * @copyright 2013 onwards Dan Marsden + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class attendance_taken_by_student extends \core\event\base { + + /** + * Init method. + */ + protected function init() { + $this->data['crud'] = 'r'; + $this->data['edulevel'] = self::LEVEL_TEACHING; + $this->data['objecttable'] = 'attendance'; + } + + /** + * Returns non-localised description of what happened. + * + * @return string + */ + public function get_description() { + return 'Student with id ' . $this->userid . ' took attendance with instanceid ' . + $this->objectid; + } + + /** + * Returns localised general event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventtakenbystudent', 'mod_attendance'); + } + + /** + * Get URL related to the action + * + * @return \moodle_url + */ + public function get_url() { + return new \moodle_url('/take.php', array('id' => $this->contextinstanceid, + 'sessionid' => $this->other['sessionid'], + 'grouptype' => $this->other['grouptype'])); + } + + /** + * Replace add_to_log() statement. + * + * @return array of parameters to be passed to legacy add_to_log() function. + */ + protected function get_legacy_logdata() { + return array($this->courseid, 'attendance', 'taken', $this->get_url(), + '', $this->contextinstanceid); + } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + if (empty($this->other['sessionid'])) { + throw new \coding_exception('The event mod_attendance\\event\\attendance_taken must specify sessionid.'); + } + parent::validate_data(); + } +} diff --git a/lang/en/attendance.php b/lang/en/attendance.php index 16fbca1..efa7c56 100644 --- a/lang/en/attendance.php +++ b/lang/en/attendance.php @@ -217,10 +217,11 @@ $string['week'] = 'week(s)'; $string['weeks'] = 'Weeks'; $string['youcantdo'] = 'You can\'t do anything'; -$string['eventreportviewed'] = 'Report viewed'; +$string['eventreportviewed'] = 'Attendance report viewed'; $string['eventsessionadded'] = 'Session added'; $string['eventsessionupdated'] = 'Session updated'; $string['eventtaken'] = 'Attendance taken'; +$string['eventtakenbystudent'] = 'Attendance taken by student'; $string['eventsessiondeleted'] = 'Session deleted'; $string['eventdurationupdated'] = 'Session duration updated'; $string['eventstatusupdated'] = 'Status updated'; diff --git a/locallib.php b/locallib.php index 6c787ff..c0bef5c 100644 --- a/locallib.php +++ b/locallib.php @@ -900,7 +900,7 @@ class attendance { 'grouptype' => 0); // Log the change. - $event = \mod_attendance\event\attendance_taken::create(array( + $event = \mod_attendance\event\attendance_taken_by_student::create(array( 'objectid' => $this->id, 'context' => $this->context, 'other' => $params)); diff --git a/tests/behat/attendance_mod.feature b/tests/behat/attendance_mod.feature index 10acbdd..2926fd8 100644 --- a/tests/behat/attendance_mod.feature +++ b/tests/behat/attendance_mod.feature @@ -55,7 +55,7 @@ Feature: Teachers and Students can record session attendance And I expand "Reports" node And I follow "Logs" And I click on "Get these logs" "button" - Then "attendance taken by student" "link" should exist + Then "Attendance taken by student" "link" should exist Scenario: Teachers can view low grade report and send a message When I log in as "teacher1" @@ -75,7 +75,7 @@ Feature: Teachers and Students can record session attendance And I expand "Reports" node And I follow "Logs" And I click on "Get these logs" "button" - Then "attendance report viewed" "link" should exist + Then "Attendance report viewed" "link" should exist # Dependency - selenium running with firefox profile with auto saving of txt files to $CFG->behat_download. @javascript @_file_download diff --git a/tests/behat/attendance_taken_by_student.php b/tests/behat/attendance_taken_by_student.php new file mode 100644 index 0000000..ffc667b --- /dev/null +++ b/tests/behat/attendance_taken_by_student.php @@ -0,0 +1,104 @@ +. + +/** + * This file contains an event for when an attendance is taken. + * + * @package mod_attendance + * @copyright 2014 onwards Dan Marsden + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_attendance\event; +defined('MOODLE_INTERNAL') || die(); + +/** + * Event for when an attendance is taken. + * + * @property-read array $other { + * Extra information about event properties. + * + * @string mode Mode of the report viewed. + * } + * @package mod_attendance + * @since Moodle 2.7 + * @copyright 2013 onwards Dan Marsden + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class attendance_taken_by_student extends \core\event\base { + + /** + * Init method. + */ + protected function init() { + $this->data['crud'] = 'r'; + $this->data['edulevel'] = self::LEVEL_TEACHING; + $this->data['objecttable'] = 'attendance'; + } + + /** + * Returns non-localised description of what happened. + * + * @return string + */ + public function get_description() { + return 'Student with id ' . $this->userid . ' took attendance with instanceid ' . + $this->objectid; + } + + /** + * Returns localised general event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventtakenbystudent', 'mod_attendance'); + } + + /** + * Get URL related to the action + * + * @return \moodle_url + */ + public function get_url() { + return new \moodle_url('/mod/attendance/take.php', array('id' => $this->contextinstanceid, + 'sessionid' => $this->other['sessionid'], + 'grouptype' => $this->other['grouptype'])); + } + + /** + * Replace add_to_log() statement. + * + * @return array of parameters to be passed to legacy add_to_log() function. + */ + protected function get_legacy_logdata() { + return array($this->courseid, 'attendance', 'taken', $this->get_url(), + '', $this->contextinstanceid); + } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + if (empty($this->other['sessionid'])) { + throw new \coding_exception('The event mod_attendance\\event\\attendance_taken must specify sessionid.'); + } + parent::validate_data(); + } +}