Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/tests/main/inc/lib/course.lib.test.php

557 lines
20 KiB

<?php
/*
* To can run this test you need comment this line or "die(mysql_error())" in 1345 course.lib.php
*
*/
require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
require_once(api_get_path(LIBRARY_PATH).'mail.lib.inc.php');
require_once(api_get_path(LIBRARY_PATH).'database.lib.php');
require_once(api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php');
Mock::generate('Database');
Mock::generate('CourseManager');
Mock::generate('Display');
class TestCourse extends UnitTestCase{
public $tcourse;
public function TestCourse(){
$this->UnitTestCase('Courses library - main/inc/lib/course.lib.test.php');
}
public function setUp(){
global $_configuration;
$this->tcourse = new CourseManager();
$course_datos = array(
'wanted_code'=> 'COURSE1',
'title'=>'COURSE1',
'tutor_name'=>'R. J. Wolfagan',
'category_code'=>'2121',
'course_language'=>'english',
'course_admin_id'=>'1211',
'db_prefix'=> $_configuration['db_prefix'],
'firstExpirationDelay'=>'112'
);
$res = create_course($course_datos['wanted_code'], $course_datos['title'],
$course_datos['tutor_name'], $course_datos['category_code'],
$course_datos['course_language'],$course_datos['course_admin_id'],
$course_datos['db_prefix'], $course_datos['firstExpirationDelay']);
}
public function tearDown(){
$this->tcourse = null;
$this->dbase = null;
$code = 'COURSE1';
$res = CourseManager::delete_course($code);
$path = api_get_path(SYS_PATH).'archive';
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if (strpos($file,$code)!==false) {
if (is_dir($path.'/'.$file)) {
rmdirr($path.'/'.$file);
}
}
}
closedir($handle);
}
}
/*
*todo public function testGetCourseInformation()
*todo public function testGetCoursesList()
*todo public function testGetAccessSettings()
*todo public function testGetUserInCourseStatus()
*todo public function testUnsubcribeUser()
*todo public function testSubscribeUser()
*todo public function testAddUserToCourse()
*todo public function testGetRealCourseCodeSelectHtml()
*todo public function testCheckParameter()
*todo public function testCheckParameterOrFail()
*todo public function testIsExistingCourseCode()
*todo public function testGetRealCourseList()
*todo public function testGetVirtualCourseList()
*todo public function testGetRealCourseListOfUserAsCourseAdmin()
*todo public function testGetCourseListOfUserAsCourseAdmin()
*todo public function testDetermineCourseTitleFromCourseInfo()
*todo public function testCreateCombinedName()
*todo public function testCreateCombinedCode()
*todo public function testGetVirtualCourseInfo()
*todo public function testIsVirtualCourseFromSystemCode()
*todo public function testIsVirtualCourseFromVisualCode()
*todo public function testHasVirtualCoursesFromCode()
*todo public function testGetVirtualCoursesLinkedToRealCourse()
*todo public function testGetTargetOfLinkedCourse()
*todo public function testIsCourseTeacher()
*todo public function testIsUserSubscribedInRealOrLinkedCourse()
*todo public function testGetUserListFromCourseCode()
*todo public function testGetCoachListFromCourseCode()
*todo public function testGetStudentListFromCourseCode()
*todo public function testGetTeacherListFromCourseCode()
*todo public function testGetRealAndLinkedUserList()
*todo public function testGetListOfVirtualCoursesForSpecificUserAndRealCourse()
*todo public function testGetGroupListOfCourse()
*todo public function testAttemptCreateVirtualCourse()
*todo public function testCreateVirtualCourse()
*todo public function testDeleteCourse()
*todo public function testCreateDatabaseDump()
*todo public function testUserCourseSort()
*todo public function testSelectAndSortCategories()
*todo public function testCourseExists()
*todo public function testEmailToTutor()
*todo public function testGetCourseListByUserId()
*todo public function testGetCourseIdFromPath()
*todo public function testGetCourseInfoVisualCode()
*todo public function testGetEmailOfTutorsToCourse()
*todo public function testGetEmailOfTutorToSession()
*todo public function testCreateCourseExtrField()
*todo public function testUpdateCourseExtraFieldValue()
*/
public function testGetCourseInformation(){
$res = $this->tcourse->get_course_information(1211);
$this->assertFalse($res);
$this->assertTrue(is_bool($res));
$this->assertTrue($this->tcourse->get_course_information(1211)=== is_array($res));
}
public function testGetCoursesList(){
$res = $this->tcourse->get_courses_list();
$this->assertTrue(is_array($res));
//var_dump($res);
}
public function testGetAccessSettings(){
$res = $this->tcourse->get_access_settings(0001);
$this->assertFalse($res);
$this->assertTrue($this->tcourse->get_access_settings(0001)===is_array($res));
$this->assertFalse(is_null($res));
}
public function testGetUserInCourseStatus(){
$res = $this->tcourse->get_user_in_course_status(01,0001);
$this->assertFalse($res);
$this->assertTrue($this->tcourse->get_user_in_course_status(01,0001)===null);
$this->assertTrue(is_null($res));
}
public function testUnsubscribeUser(){
$user_id = 1;
$course_code = 'COURSE1';
$res = CourseManager::unsubscribe_user($user_id, $course_code);
$this->assertNull($res);
$this->assertFalse(is_string($res));
}
public function testSubscribeUser(){
$user_id = 1;
$course_code = 'COURSE1';
$status = STUDENT;
$res = CourseManager::subscribe_user($user_id, $course_code, $status);
$this->assertTrue(is_bool($res));
}
public function testAddUserToCourse(){
$user_id = 1;
$course_code = 'COURSE1';
$status = STUDENT;
$res = CourseManager::add_user_to_course($user_id, $course_code, $status);
$this->assertTrue($res);
$this->assertTrue(is_bool($res));
//var_dump($res);
}
//function deprecated public function testGetRealCourseCodeSelectHtml(){}
public function testCheckParameter(){
$parameter = '123';
$error_message = 'oops!!';
$res = $this->tcourse->check_parameter($parameter, $error_message);
$this->assertTrue($res);
$this->assertTrue(is_bool($res));
}
public function testCheckParameterOrFail(){
$parameter = 'course';
$error_message = 'upps';
$res = $this->tcourse->check_parameter_or_fail($parameter,$error_message); //ob_get_contents();
$this->assertTrue(is_null($res));
$this->assertFalse($res);
$this->assertTrue($res=== null);
$this->assertEqual($res,null);
}
public function testCourseCodeExists() {
$wanted_course_code = 'COURSE1';
$res = $this->tcourse->course_code_exists($wanted_course_code);
$this->assertTrue(is_bool($res));
$this->assertTrue($res);
}
/** Return a array() but now its empty, with this test is cheking is get the list course
* @author Arthur Portugal <arthur.portugal@dokeos.com> -
* doesn't work correctly refactoring by Ricardo Rodriguez <ricardo.rodriguez@beeznest.com>
**/
public function testGetRealCourseList(){
$res = CourseManager::get_real_course_list();
$this->assertTrue(is_array($res));
$this->assertTrue($res);
//var_dump($res);
}
public function testGetVirtualCourseList(){
$course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
$sql_query = "SELECT * FROM $course_table WHERE target_course_code IS NOT NULL";
$sql_result = Database::query($sql_query);
$num = Database::num_rows($sql_result);
$res = $this->tcourse->get_virtual_course_list();
$this->assertEqual($num,count($res));
}
public function testGetRealCourseListOfUserAsCourseAdmin(){
$user_id = 1;
$res = $this->tcourse->get_real_course_list_of_user_as_course_admin($user_id);
$this->assertTrue(is_array($res));
}
public function testGetCourseListOfUserAsCourseAdmin(){
$user_id = 1;
$res = $this->tcourse->get_course_list_of_user_as_course_admin($user_id);
$this->assertTrue(is_array($res));
}
public function testDetermineCourseTitleFromCourseInfo(){
$user_id = 1;
$course_info = 'abcd123';
$res = $this->tcourse->determine_course_title_from_course_info($user_id, $course_info);
$this->assertTrue($res);
$this->assertTrue(is_array($res));
}
public function testCreateCombinedName(){
$complete_course_name = array();
$user_is_registered_in_real_course = false;
$real_course_name = 'COURSE1';
$virtual_course_list = array();
$res = CourseManager::create_combined_name($user_is_registered_in_real_course,
$real_course_name,
$virtual_course_list
);
$this->assertFalse($res);
$this->assertTrue(is_string($res));
//var_dump($res);
}
public function testCreateCombinedCode(){
$complete_course_code = array();
$user_is_registered_in_real_course = false;
$real_course_code = 'COURSE1';
$virtual_course_list = array();
$res = CourseManager::create_combined_code($user_is_registered_in_real_course,
$real_course_code,
$virtual_course_list);
if(is_array($res)){
$this->assertFalse($res);
$this->assertTrue(is_string($res));
} else {
$this->assertFalse(is_null($res));
}
//var_dump($res);
}
public function testGetVirtualCourseInfo(){
$real_course_code = 'COURSE1';
$res = $this->tcourse->get_virtual_course_info($real_course_code);
if(is_array($res)){
$this->assertTrue(is_array($res));
} else {
$this->assertTrue($res);
}
//var_dump($res);
}
public function testIsVirtualCourseFromSystemCode(){
$system_code = 'COURSE1';
$res = $this->tcourse->is_virtual_course_from_system_code($system_code);
$this->assertFalse($res);
$this->assertTrue(is_bool($res));
$this->assertFalse($res,null);
}
public function testIsVirtualCourseFromVisualCode(){
$system_code = 'COURSE1';
$res = $this->tcourse->is_virtual_course_from_visual_code($system_code);
$this->assertFalse($res);
$this->assertTrue(is_bool($res));
}
public function testHasVirtualCourseFromCode(){
$real_course_code = 'COURSE1';
$user_id = 1;
$res = CourseManager::has_virtual_courses_from_code($real_course_code, $user_id);
if(is_bool($res)){
$this->assertFalse($res);
$this->assertTrue(is_bool($res));
} else {
$this->assertFalse(is_null($res));
}
//var_dump($res);
}
public function testGetVirtualCourseLinkedToRealCourse(){
$real_course_code = 'COURSE1';
$res = CourseManager::get_virtual_courses_linked_to_real_course($real_course_code);
$this->assertFalse($res);
$this->assertTrue(is_array($res));
$this->assertFalse(is_null($res));
}
public function testGetTargetOfLinkedCourse(){
$virtual_course_code = 'COURSE1';
$res = CourseManager::get_target_of_linked_course($virtual_course_code);
$this->assertFalse($res);
$this->assertTrue(is_null($res));
$this->assertNull($res,true);
}
public function testIsUserSubscribedInCourse(){
$user_id = 1;
$course_code = 'COURSE1';
$in_a_session = false;
$res = CourseManager::is_user_subscribed_in_course($user_id, $course_code, $in_a_session);
$this->assertTrue(is_bool($res));
//var_dump($res);
}
public function testIsCourseTeacher(){
$user_id = 1;
$course_code = 'COURSE1';
$res = CourseManager::is_course_teacher($user_id, $course_code);
$this->assertTrue(is_bool($res));
$this->assertFalse($res);
}
public function testIsUserSubscribedInRealOrLinkedCourse(){
$user_id = 1;
$course_code = 'COURSE1';
$session_id = '';
$res = CourseManager::is_user_subscribed_in_real_or_linked_course($user_id, $course_code, $session_id);
if(is_bool($res)){
$this-> assertTrue(is_bool($res));
$this->assertFalse($res);
} else {
$this->assertTrue($res);
}
//var_dump($res);
}
public function testGetUserListFromCourseCode(){
$course_code = 'COURSE1';
$with_session = true;
$session_id = 0;
$limit = '';
$order_by = '';
$res = CourseManager::get_user_list_from_course_code($course_code, $with_session, $session_id, $limit, $order_by);
//$this->assertTrue($res);
$this->assertTrue(is_array($res));
//var_dump($res);
}
public function testGetCoachListFromCourseCode(){
$course_code = 'COURSE1';
$session_id = '';
$res = CourseManager::get_coach_list_from_course_code($course_code, $session_id);
$this->assertFalse($res);
$this->assertTrue(is_array($res));
}
public function testGetStudentListFromCourseCode(){
$course_code = 'COURSE1';
$session_id = '001';
$res = $this->tcourse->get_student_list_from_course_code($course_code, $session_id);
//$this->assertTrue($res);
$this->assertTrue(is_array($res));
//var_dump($res);
}
public function testGetTeacherListFromCourseCode(){
$course_code = 'COURSE1';
$res = $this->tcourse->get_teacher_list_from_course_code($course_code);
$this->assertFalse($res);
$this->assertFalse(is_null($res));
//var_dump($res);
}
public function testGetRealAndLinkedUserList(){
$course_code = 'COURSE1';
$with_sessions = true;
$session_id = 0;
$res = $this->tcourse->get_real_and_linked_user_list($course_code, $with_sessions, $session_id);
$this->assertNull($res);
$this->assertTrue(is_null($res));
//$this->assertTrue($this->tcourse->get_real_and_linked_user_list()===null);
//var_dump($res);
}
public function testGetListOfVirtualCoursesForSpecificUserAndRealCourse(){
$result_array = array('user_id' => 1, 'real_course_code' => 'COURSE1');
$res = CourseManager::get_list_of_virtual_courses_for_specific_user_and_real_course($result_array['user_id'],$result_array['real_course_code']);
if(is_array($res)){
$this->assertTrue(is_array($res));
} else {
$this->assertTrue($res);
}
//var_dump($res);
}
public function testGetGroupListOfCourse(){
$course_code = 'COURSE1';
$sql= "SELECT * FROM chamilo_COURSE1";
$result = CourseManager::get_group_list_of_course($course_code);
$this->assertTrue(is_array($result));
$this->assertFalse($result);
//var_dump($res);
}
public function testAttemptCreateVirtualCourse(){
$real_course_code = 'COURSE1';
$course_title = 'COURSE1';
$wanted_course_code = 'COURSE1';
$course_language = 'english';
$course_category = 'LANG';
ob_start();
$res = CourseManager::attempt_create_virtual_course($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category);
ob_end_clean();
$this->assertTrue(is_bool($res));
}
public function testCreateVirtualCourse(){
$real_course_code = 'COURSE1';
$course_title = 'COURSE1';
$wanted_course_code = 'COURSE1';
$course_language = 'english';
$course_category = 'LANG';
ob_start();
$res = CourseManager::create_virtual_course($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category);
ob_end_clean();
if(is_bool($res)){
$this->assertTrue(is_bool($res));
} else {
$this->assertTrue($res);
}
//var_dump($res);
}
public function testCreateDatabaseDump(){
global $_configuration;
$course_code='COURSE1';
$res = $this->tcourse->create_database_dump($course_code);
$this->assertFalse($res);
$this->assertTrue(is_null($res));
}
public function testUserCourseSort(){
$user_id ='01';
$course_code='COURSE1';
$res = CourseManager::UserCourseSort($user_id,$course_code);
$this->assertTrue($res);
$this->assertTrue(is_numeric($res));
}
public function testSelectAndSortCategories(){
$form = new FormValidator('add_course');
$categories = array('name' => 'prueba');
$categories_select = $form->addElement('select', 'category_code', get_lang('Fac'), $categories);
$res = $this->tcourse->select_and_sort_categories($categories_select);
$this->assertFalse($res);
$this->assertTrue(is_null($res));
}
public function testCourseExists(){
$course_code='COURSE1';
$accept_virtual = false;
$res=$this->tcourse->course_exists($course_code, $accept_virtual);
$this->assertTrue(is_numeric($res));
}
public function testEmailToTutor() {
$user_id= '01';
$course_code= 'COURSE1';
$res=CourseManager::email_to_tutor($course_code,$user_id);
$this->assertTrue(is_string($course_code));
//var_dump($res);
}
public function testGetCoursesListByUserId(){
$user_id = '01';
$res = $this->tcourse->get_courses_list_by_user_id($user_id);
$this->assertTrue(is_array($res));
//var_dump($res);
}
public function testGetCourseIdFromPath(){
$path = '/var/www/path';
$res = $this->tcourse->get_course_id_from_path($path);
$this->assertTrue(is_bool($res));
$this->assertTrue($res === false);
}
public function testGetCoursesInfoFromVisualCode(){
$code = '0001';
$res=$this->tcourse->get_courses_info_from_visual_code($code);
$this->assertTrue(is_array($res));
//var_dump($res);
}
public function testGetEmailsOfTutorsToCourse(){
$code = '0001';
$res= $this->tcourse->get_emails_of_tutors_to_course($code);
$this->assertTrue(is_array($res));
//var_dump($res);
}
public function testGetEmailOfTutorToSession(){
$session_id = '01';
$course_code = 'COURSE1';
ob_start();
$res = CourseManager::get_email_of_tutor_to_session($session_id,$course_code);
ob_end_clean();
$this->assertTrue(is_array($res));
//var_dump($res);
}
public function testCreateCourseExtraField(){
$fieldvarname = '';
$fieldtype = '5';
$fieldtitle = '';
$res = $this->tcourse->create_course_extra_field($fieldvarname, $fieldtype, $fieldtitle);
$this->assertTrue(is_numeric($res));
$this->assertTrue($res);
}
public function testUpdateCourseExtraFieldValue(){
$course_code = 'COURSE1';
$fname = '';
$fvalue= '';
$res = $this->tcourse->update_course_extra_field_value($course_code,$fname,$fvalue='');
$this->assertTrue($res);
$this->assertTrue(is_bool($res));
$this->assertFalse(is_null($res));
}
public function testDeleteCourse(){
global $_configuration;
$code = 'COURSE1';
if (!empty($course_code)) {
$code = $course_code;
}
$res = CourseManager::delete_course($code);
$this->assertTrue(is_null($res));
}
}
?>