statistics.lib.test.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <?php
  2. require_once(api_get_path(LIBRARY_PATH).'sessionmanager.lib.php');
  3. require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
  4. Mock::generate('Database');
  5. Mock::generate('Display');
  6. Mock::generate('DocumentManager');
  7. class TestStatistics extends UnitTestCase{
  8. public $statisc;
  9. public function TestStatistics(){
  10. $this->UnitTestCase('this File test the provides some function for statistics ');
  11. }
  12. public function setUp(){
  13. $this-> statisc = new Statistics();
  14. }
  15. public function tearDown(){
  16. $this->statisc = null;
  17. }
  18. public function testMakeSizeString(){
  19. $size=20960000;
  20. $res = Statistics::make_size_string($size);
  21. $this->assertTrue(is_string($res));
  22. //var_dump($res);
  23. }
  24. public function testCountCourse(){
  25. $instans = new MockDatabase();
  26. $course_code = 'ABC';
  27. $course_code2 = 'ABCD';
  28. $category_code = NULL;
  29. $session_id = SessionManager::create_session($course_code,2009,07,20,2010,07,20,0,0,1,'coach');
  30. $res = Statistics::count_courses($category_code);
  31. $this->assertTrue(is_numeric($res));
  32. $this->assertTrue(count($res) !== 0);
  33. //var_dump($res);
  34. }
  35. public function testCountCourse2(){
  36. $instans = new MockDatabase();
  37. $user_id=1;
  38. $course_code = 'ABC';
  39. $course_code2 = 'ABCD';
  40. $category_code = NULL;
  41. $session_id = SessionManager::create_session($course_code,2009,07,20,2010,07,20,0,0,1,'coach');
  42. SessionManager::add_courses_to_session($session_id,array($course_code));
  43. SessionManager::suscribe_users_to_session($session_id,array($user_id));
  44. $res = Statistics::count_courses($category_code);
  45. $this->assertTrue(count($res ==0));
  46. $this->assertTrue(is_numeric($res));
  47. CourseManager::delete_course($course_code);
  48. //var_dump($res);
  49. }
  50. public function testCountCourse3(){
  51. $user_id=1;
  52. $course_code = 'ABC';
  53. $course_code2 = 'ABCD';
  54. $category_code = NULL;
  55. $session_id = SessionManager::create_session($course_code,2009,07,20,2010,07,20,0,0,1,'coach');
  56. SessionManager::suscribe_users_to_session($session_id,array($user_id+3));
  57. $res = Statistics::count_courses($category_code);
  58. $this->assertTrue(is_numeric($res));
  59. $this->assertTrue(count($res)!==0);
  60. //var_dump($res);
  61. }
  62. public function testCountCourse4(){
  63. $user_id=1;
  64. $course_code = 'ABC';
  65. $course_code2 = 'ABCD';
  66. $category_code = NULL;
  67. //ob_start();
  68. $session_id = SessionManager::create_session($course_code,2009,07,20,2010,07,20,0,0,1,'coach');
  69. SessionManager::suscribe_users_to_session($session_id,array($user_id+3));
  70. SessionManager::add_courses_to_session($session_id,array());
  71. $res = Statistics::count_courses($category_code);
  72. $this->assertTrue(is_numeric($res));
  73. $this->assertTrue(count($res)!==0);
  74. SessionManager::delete_session($session_id);
  75. CourseManager::delete_course($course_code2);
  76. CourseManager::delete_course($course_code);
  77. //ob_end_clean();
  78. //var_dump($res);
  79. }
  80. public function testCountUsers(){
  81. $user_id =001;
  82. $category_code = NULL;
  83. $course_code='ABC';
  84. $firstName='adam'; $lastName='ivan'; $status='01'; $email='ricardo.rodriguez@dokeos.com'; $loginName='adam'; $password='1234';
  85. $count_invisible_courses = true;
  86. $session_id = SessionManager::create_session($course_code,2009,07,20,2010,07,20,0,0,1,'coach');
  87. SessionManager::suscribe_users_to_session($session_id,array($user_id+3));
  88. $res = Statistics::count_users($status, $category_code, $count_invisible_courses);
  89. $this->assertTrue(is_numeric($res));
  90. $this->assertTrue(count($res)===0 || count($res)!==0);
  91. SessionManager::delete_session($session_id);
  92. //var_dump($res);
  93. }
  94. public function testGetNumberOfActivities(){
  95. $activitis = new MockDatabase();
  96. $sql = "SELECT count(default_id) AS total_number_of_items FROM $track_e_default ";
  97. $res = api_sql_query($sql, __FILE__, __LINE__);
  98. $obj = Database::fetch_object($res);
  99. $resu = Statistics::get_number_of_activities();
  100. $this->assertTrue(is_numeric($resu));
  101. $this->assertTrue(count($resu)==0 || count($resu)!==0);
  102. //var_dump($resu);
  103. //var_dump($res);
  104. }
  105. public function testGetActivitiesData(){
  106. $instans = new MockDatabase();
  107. global $dateTimeFormatLong;
  108. $from='';
  109. $number_of_items=10;
  110. $column='';
  111. $direction='';
  112. $track_e_default = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_DEFAULT);
  113. $table_user = Database::get_main_table(TABLE_MAIN_USER);
  114. $sql = "SELECT
  115. default_event_type as col0,
  116. default_value_type as col1,
  117. default_value as col2,
  118. user.username as col3,
  119. default_date as col4
  120. FROM $track_e_default track_default, $table_user user
  121. WHERE track_default.default_user_id = user.user_id ";
  122. $res = api_sql_query($sql, __FILE__, __LINE__);
  123. $row = Database::fetch_row($res);
  124. $resu = Statistics::get_activities_data($from, $number_of_items, $column, $direction);
  125. $this->assertTrue(is_array($resu));
  126. $this->assertTrue($row);
  127. //var_dump($resu);
  128. //var_dump($row);
  129. //var_dump($res);
  130. }
  131. public function testGetCourseCategories(){
  132. $user_id =002;
  133. $category_code = NULL;
  134. $course_code='ABCDE';
  135. $real_course_code='00001';
  136. $course_title='test1';
  137. $wanted_course_code='test2';
  138. $course_language='es';
  139. $course_category='primary';
  140. $code='00001';
  141. $session_id = SessionManager::create_session($course_code,2009,07,20,2010,07,20,0,0,1,'coach');
  142. CourseManager::create_virtual_course ($real_course_code, $course_title, $wanted_course_code, $course_language, $course_category);
  143. $res = Statistics::get_course_categories();
  144. $this->assertTrue($res);
  145. CourseManager::delete_course($code);
  146. //var_dump($res);
  147. }
  148. public function testRescale(){
  149. $data=array('aas','aaa'.'aab');
  150. $max = 500;
  151. $res = Statistics::rescale($data, $max);
  152. $this->assertTrue($res);
  153. $this->assertTrue(is_array($res));
  154. //var_dump($res);
  155. }
  156. public function testPrintStats(){
  157. ob_start();
  158. $title='testing';
  159. $stats=array('aa','bb','cc');
  160. $show_total = true;
  161. $is_file_size = false;
  162. $res = Statistics::print_stats($title, $stats, $show_total = true, $is_file_size = false);
  163. ob_end_clean();
  164. $this->assertTrue(is_null($res));
  165. //var_dump($res);
  166. }
  167. public function testPrintLoginStats(){
  168. ob_start();
  169. $instans = new MockDatabase();
  170. $type='january';
  171. $table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
  172. if($type === 'month'){
  173. $sql = "SELECT DATE_FORMAT( login_date, '%Y %b' ) AS stat_date , count( login_id ) AS number_of_logins FROM ".$table." GROUP BY stat_date ORDER BY login_date ";
  174. }if($type === 'hour'){
  175. $sql = "SELECT DATE_FORMAT( login_date, '%H' ) AS stat_date , count( login_id ) AS number_of_logins FROM ".$table." GROUP BY stat_date ORDER BY stat_date ";
  176. }else{
  177. $sql = "SELECT DATE_FORMAT( login_date, '%a' ) AS stat_date , count( login_id ) AS number_of_logins FROM ".$table." GROUP BY stat_date ORDER BY DATE_FORMAT( login_date, '%w' ) ";
  178. }
  179. $res = api_sql_query($sql,__FILE__,__LINE__);
  180. $obj = Database::fetch_object($res);
  181. $result[$obj->stat_date] = $obj->number_of_logins;
  182. $login_stats[] = $result;
  183. $resu = Statistics::print_login_stats($type);
  184. ob_end_clean();
  185. $instans->expectOnce($login_stats);
  186. $this->assertTrue(is_null($resu));
  187. $this->assertTrue($result);
  188. //var_dump($resu);
  189. //var_dump($result);
  190. }
  191. public function testPrintRecenLoginStats(){
  192. ob_start();
  193. $instans = new MockDatabase();
  194. $total_logins = array();
  195. $table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
  196. $query[get_lang('Total')] = "SELECT count(login_user_id) AS number FROM $table";
  197. $res = api_sql_query($query,__FILE__,__LINE__);
  198. $obj = Database::fetch_object($res);
  199. $total_logins[] = $obj->number;
  200. $res = Statistics::print_recent_login_stats();
  201. ob_end_clean();
  202. $instans->expectCallCount($total_logins);
  203. $this->assertTrue(is_null($res));
  204. $this->assertTrue(count($total_logins));
  205. //var_dump($res);
  206. //var_dump($total_logins);
  207. }
  208. public function testPrintToolStats(){
  209. ob_start();
  210. $instans = new MockDatabase();
  211. $table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS);
  212. $tools = array('announcement','assignment','calendar_event','chat','conference','course_description','document','dropbox','group','learnpath','link','quiz','student_publication','user','bb_forum');
  213. $sql = "SELECT access_tool, count( access_id ) AS number_of_logins FROM $table WHERE access_tool IN ('".implode("','",$tools)."') GROUP BY access_tool ";
  214. $res = api_sql_query($sql,__FILE__,__LINE__);
  215. $result = array();
  216. $obj = Database::fetch_object($res);
  217. $result[$obj->access_tool] = $obj->number_of_logins;
  218. $resu = Statistics::print_tool_stats();
  219. ob_end_clean();
  220. $instans->expectCallCount($result);
  221. $this->assertTrue(is_null($resu));
  222. //var_dump($resu);
  223. //var_dump($result);
  224. }
  225. public function testPrintCourseByLanguageStats(){
  226. ob_start();
  227. $instans = new MockDatabase();
  228. $table = Database::get_main_table(TABLE_MAIN_COURSE);
  229. $sql = "SELECT course_language, count( code ) AS number_of_courses FROM $table GROUP BY course_language ";
  230. $res = api_sql_query($sql,__FILE__,__LINE__);
  231. $result = array();
  232. $obj = Database::fetch_object($res);
  233. $result[$obj->course_language] = $obj->number_of_courses;
  234. $instans->expectOnce($result);
  235. $resu = Statistics::print_course_by_language_stats();
  236. ob_end_clean();
  237. $this->assertTrue(is_null($resu));
  238. $this->assertTrue(is_array($result));
  239. //var_dump($resu);
  240. //var_dump($result);
  241. }
  242. public function testPrintUserPicturesStats(){
  243. ob_start();
  244. $instans = new MockDatabase();
  245. $user_table = Database :: get_main_table(TABLE_MAIN_USER);
  246. $sql = "SELECT COUNT(*) AS n FROM $user_table";
  247. $res = api_sql_query($sql,__FILE__,__LINE__);
  248. $count1 = Database::fetch_object($res);
  249. $instans_print[]= $count1;
  250. $instans->expectOnce($instans_print);
  251. $instans->expectCallCount($instans_print);
  252. $resu = Statistics::print_user_pictures_stats();
  253. ob_end_clean();
  254. $this->assertTrue(is_null($resu));
  255. $this->assertTrue($instans_print);
  256. //var_dump($resu);
  257. //var_dump($instans_print);
  258. }
  259. public function testPrintActivitiesStats(){
  260. ob_start();
  261. $res = Statistics::print_activities_stats();
  262. ob_end_clean();
  263. $this->assertTrue(is_null($res));
  264. //var_dump($res);
  265. }
  266. public function testPrintCourseLastVisit(){
  267. ob_start();
  268. $instans = new MockDatabase();
  269. $instans1 = new MockDisplay();
  270. $table_header[] = array ("Coursecode", true);
  271. $course = array ();
  272. $courses[] = $course;
  273. $column='';
  274. $direction='';
  275. $parameters['action'] = 'courselastvisit';
  276. $instans->expectCallCount('Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LASTACCESS)');
  277. $instans1->expectOnce(Display :: display_sortable_table($table_header, $courses, array('column'=>$column,'direction'=>$direction), array (), $parameters));
  278. $res = Statistics::print_course_last_visit();
  279. ob_end_clean();
  280. $this->assertTrue(is_null($res));
  281. //var_dump($res);
  282. }
  283. }
  284. ?>