AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Performance test for questionnaire module.
* @package mod_questionnaire
* @group mod_questionnaire
* @author Guy Thomas
* @copyright Copyright (c) 2015 Moodlerooms Inc. (http://www.moodlerooms.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class mod_questionnaire_csvexport_test extends advanced_testcase {
public function setUp(): void {
global $CFG;
require_once($CFG->dirroot.'/lib/testing/generator/data_generator.php');
require_once($CFG->dirroot.'/lib/testing/generator/component_generator_base.php');
require_once($CFG->dirroot.'/lib/testing/generator/module_generator.php');
}
/**
* Get csv text
*
* @param array $rows
* @return string
*/
private function get_csv_text(array $rows) {
$lines = [];
foreach ($rows as $row) {
// Remove the id and date fields.
unset($row[0]);
unset($row[1]);
unset($row[6]);
$text = implode("\t", $row);
$lines[] = $text;
}
return $lines;
}
public function test_csvexport() {
$this->resetAfterTest();
$dg = $this->getDataGenerator();
$qdg = $dg->get_plugin_generator('mod_questionnaire');
$qdg->create_and_fully_populate(1, 5, 1, 1);
// The following line simply.
$questionnaires = $qdg->questionnaires();
foreach ($questionnaires as $questionnaire) {
list ($course, $cm) = get_course_and_cm_from_instance($questionnaire->id, 'questionnaire', $questionnaire->course);
$questionnaireinst = new questionnaire($course, $cm, 0, $questionnaire);
// Test for only complete responses.
$newoutput = $this->get_csv_text($questionnaireinst->generate_csv(0, '', '', 0, 0, 0));
$this->assertEquals(count($newoutput), count($this->expected_complete_output()));
foreach ($newoutput as $key => $output) {
$this->assertEquals($this->expected_complete_output()[$key], $output);
}
// Test for all responses.
$newoutput = $this->get_csv_text($questionnaireinst->generate_csv(0, '', '', 0, 0, 1));
$this->assertEquals(count($newoutput), count($this->expected_incomplete_output()));
foreach ($newoutput as $key => $output) {
$this->assertEquals($this->expected_incomplete_output()[$key], $output);
}
}
}
/**
* Return the expected output.
* @return string[]
*/
private function expected_complete_output() {
return ["Institution Department Course Group Full name Username Q01_Text Box 1000 Q02_Essay Box 1002 " .
"Q03_Numeric 1004 Q04_Date 1006 Q05_Radio Buttons 1008 Q06_Drop Down 1010 Q07_Check Boxes 1012->four " .
"Q07_Check Boxes 1012->five Q07_Check Boxes 1012->six Q07_Check Boxes 1012->seven Q07_Check Boxes 1012->eight " .
"Q07_Check Boxes 1012->nine Q07_Check Boxes 1012->ten Q07_Check Boxes 1012->eleven " .
"Q07_Check Boxes 1012->twelve Q07_Check Boxes 1012->thirteen Q08_Rate Scale 1014->fourteen " .
"Q08_Rate Scale 1014->fifteen Q08_Rate Scale 1014->sixteen Q08_Rate Scale 1014->seventeen " .
"Q08_Rate Scale 1014->eighteen Q08_Rate Scale 1014->nineteen Q08_Rate Scale 1014->twenty " .
"Q08_Rate Scale 1014->happy Q08_Rate Scale 1014->sad Q08_Rate Scale 1014->jealous Q09_Slider 1016",
" Test course 1 Testy Lastname1 username1 Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5",
" Test course 1 Testy Lastname2 username2 Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5",
" Test course 1 Testy Lastname3 username3 Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5",
" Test course 1 Testy Lastname4 username4 Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5"];
}
/**
* Return the exepected incomplete output.
* @return string[]
*/
private function expected_incomplete_output() {
return ["Institution Department Course Group Full name Username Complete Q01_Text Box 1000 " .
"Q02_Essay Box 1002 " .
"Q03_Numeric 1004 Q04_Date 1006 Q05_Radio Buttons 1008 Q06_Drop Down 1010 Q07_Check Boxes 1012->four " .
"Q07_Check Boxes 1012->five Q07_Check Boxes 1012->six Q07_Check Boxes 1012->seven Q07_Check Boxes 1012->eight " .
"Q07_Check Boxes 1012->nine Q07_Check Boxes 1012->ten Q07_Check Boxes 1012->eleven " .
"Q07_Check Boxes 1012->twelve Q07_Check Boxes 1012->thirteen Q08_Rate Scale 1014->fourteen " .
"Q08_Rate Scale 1014->fifteen Q08_Rate Scale 1014->sixteen Q08_Rate Scale 1014->seventeen " .
"Q08_Rate Scale 1014->eighteen Q08_Rate Scale 1014->nineteen Q08_Rate Scale 1014->twenty " .
"Q08_Rate Scale 1014->happy Q08_Rate Scale 1014->sad Q08_Rate Scale 1014->jealous Q09_Slider 1016",
" Test course 1 Testy Lastname1 username1 y Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5",
" Test course 1 Testy Lastname2 username2 y Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5",
" Test course 1 Testy Lastname3 username3 y Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5",
" Test course 1 Testy Lastname4 username4 y Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5",
" Test course 1 Testy Lastname5 username5 n Test answer Some header textSome paragraph text 83 " .
"27/12/2017 wind three 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 1 2 3 4 5"];
}
}