groupmanager.lib.test.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. <?php
  2. require_once(api_get_path(LIBRARY_PATH).'groupmanager.lib.php');
  3. require_once(api_get_path(LIBRARY_PATH).'database.lib.php');
  4. require_once(api_get_path(LIBRARY_PATH).'classmanager.lib.php');
  5. require_once(api_get_path(LIBRARY_PATH).'fileManage.lib.php');
  6. require_once(api_get_path(LIBRARY_PATH).'course.lib.php');
  7. require_once(api_get_path(LIBRARY_PATH).'tablesort.lib.php');
  8. //require_once(dirname(__FILE__).'/../../../simpletest/mock_objects.php');
  9. Mock::generate('Database');
  10. Mock::generate('ClassManager');
  11. Mock::generate('FileManager');
  12. Mock::generate('CourseManager');
  13. Mock::generate('TableSort');
  14. $_course = api_get_course_info('0001');
  15. class TestGroupManager extends UnitTestCase {
  16. /**
  17. * Test about groupmanager csv using many class database, class manager,
  18. * file manager, course manager and table sort.
  19. * @author Ricardo Rodriguez Salazar
  20. */
  21. /*
  22. function testExportTableCsv() {
  23. $docman = new MockDocumentManager();
  24. $data = array();
  25. $filename = 'export';
  26. $this->export = new Export();
  27. $res=$this->export->export_table_csv($data,$filename);
  28. $docman->expectOnce('DocumentManager::file_send_for_download',array($filename,true,$filename.'.csv'));
  29. $this->assertTrue(is_object($this->export));
  30. //var_dump($docman);
  31. //var_dump($export);
  32. }
  33. */
  34. public function testGetGroupList(){
  35. global $_user;
  36. $res = GroupManager::get_group_list();
  37. $this->assertTrue(is_array($res));
  38. //var_dump($res);
  39. }
  40. public function testCreateGroup(){
  41. $name='1';
  42. $category_id='1';
  43. $tutor='';
  44. $places='1';
  45. global $_course, $_user;
  46. $res = GroupManager::create_group($name, $category_id, $tutor, $places);
  47. $this->assertTrue(is_numeric($res));
  48. $this->assertTrue($res);
  49. //var_dump($res);
  50. }
  51. public function testCreateSubgroups(){
  52. $group_id = 2;
  53. $number_of_groups=3;
  54. $res = GroupManager::create_subgroups($group_id, $number_of_groups);
  55. $this->assertTrue(is_null($res));
  56. $this->assertTrue(GroupManager::create_subgroups($res)===null);
  57. //var_dump($res);
  58. }
  59. public function testCreateGroupsFromVirtualCourses(){
  60. $res = GroupManager::create_groups_from_virtual_courses();
  61. $this->assertTrue($res);
  62. $this->assertTrue(is_array($res));
  63. //var_dump($res);
  64. }
  65. public function testCreateClassGroups(){
  66. $category_id=2;
  67. $res =GroupManager::create_class_groups($category_id);
  68. $this->assertTrue(is_array($res));
  69. $this->assertTrue(GroupManager::create_class_groups($category_id) === array());
  70. //var_dump($res);
  71. }
  72. public function testDeleteGroups(){
  73. $fmanager = new MockFileManager();
  74. $dbase = new MockDatabase();
  75. $group_ids='01';
  76. $course_code=null;
  77. $res =GroupManager::delete_groups($group_ids, $course_code = null);
  78. $fmanager->expectOnce('FileManager :: mkdirs($group_garbage, $perm);');
  79. $dbase->expectOnce('Database::affected_rows()');
  80. $this->assertTrue(is_numeric($res));
  81. //var_dump($res);
  82. }
  83. public function testGetGroupProperties(){
  84. $group_id=01;
  85. $res = GroupManager::get_group_properties($group_id);
  86. $this->assertTrue($res);
  87. $this->assertTrue(is_array($res));
  88. //var_dump($res);
  89. }
  90. public function testSetGroupProperties(){
  91. $group= array('group_id'=>'01',
  92. 'name'=>'1',
  93. 'description'=>'',
  94. 'maximum_number_of_students'=>'2',
  95. 'doc_state' =>'',
  96. 'work_state' =>'',
  97. 'calendar_state' =>'',
  98. 'announcements_state'=>'',
  99. 'forum_state'=>'',
  100. 'wiki_state'=>'',
  101. 'self_registration_allowed'=>'',
  102. 'self_unregistration_allowed'=>'');
  103. $res = GroupManager::set_group_properties($group['group_id'], $group['name'], $group['description'],
  104. $group['maximum_number_of_students'], $group['doc_state'],
  105. $group['work_state'], $group['calendar_state'], $group['announcements_state'],
  106. $group['forum_state'],$group['wiki_state'], $group['self_registration_allowed'],
  107. $group['self_unregistration_allowed']);
  108. $this->assertTrue(is_bool($res));
  109. //var_dump($res);
  110. }
  111. public function testGetNumberOfGroups(){
  112. $dbase = new MockDataBase();
  113. $res = GroupManager::get_number_of_groups();
  114. $dbase->expectOnce('Database :: get_course_table(TABLE_GROUP)');
  115. $dbase->expectOnce('Database::fetch_object($res)');
  116. $dbase->expectOnce('$obj->number_of_groups');
  117. $this->assertTrue(is_null($res));
  118. //$this->assertTrue(is_string($res));
  119. //var_dump($res);
  120. }
  121. public function testGetCategories(){
  122. $course_code ='COD128983';
  123. $course_db = '';
  124. $res = GroupManager::get_categories($course_code);
  125. $this->assertTrue(is_array($res));
  126. //var_dump($res);
  127. }
  128. public function testGetCategory(){
  129. $dbase = new MockDataBase();
  130. $id =2;
  131. $course_code =null;
  132. $res = GroupManager::get_category($id,$course_code);
  133. $dbase->expectOnce('Database::fetch_array($res)');
  134. $this->assertTrue(is_bool($res));
  135. //var_dump($res);
  136. }
  137. public function testGetCategoryFromGroup(){
  138. $course_code='';
  139. $group_id='';
  140. $course_db = '';
  141. $sql = "SELECT 1 ";
  142. $res = Database::query($sql);
  143. $cat = Database::fetch_array($res);
  144. $resu = GroupManager::get_category_from_group($group_id,$course_code);
  145. $this->assertTrue(is_bool($resu));
  146. $this->assertTrue(is_array($cat));
  147. //var_dump($res);
  148. //var_dump($cat);
  149. }
  150. public function testDeleteCategory(){
  151. $cat_id=1;
  152. $course_code =null;
  153. $course_db = 'z22COD12A945';
  154. $res = GroupManager::delete_category($cat_id, $course_code);
  155. $this->assertTrue(is_null($res));
  156. $this->assertNull($res);
  157. //var_dump($res);
  158. }
  159. public function testCreateCategory(){
  160. $categ = array(
  161. 'title'=>'DefaultGroupCategory',
  162. 'description'=>'xxxxx',
  163. 'doc_state'=>'xxxx',
  164. 'work_state'=>'xxxxx',
  165. 'calendar_state'=>'',
  166. 'announcements_state'=>'',
  167. 'forum_state'=>'',
  168. 'wiki_state'=>'',
  169. 'self_registration_allowed'=>'',
  170. 'self_unregistration_allowed'=>'',
  171. 'maximum_number_of_students'=>'',
  172. 'groups_per_user'=>'0');
  173. $res = GroupManager::create_category($categ['title'], $categ['description'],
  174. $categ['doc_state'], $categ['work_state'], $categ['calendar_state'], $categ['announcements_state'],
  175. $categ['forum_state'],$categ['wiki_state'],$categ['self_registration_allowed'],$categ['self_unregistration_allowed'],
  176. $categ['maximum_number_of_students'],$categ['groups_per_user']);
  177. $this->assertTrue(is_numeric($res));
  178. //var_dump($res);
  179. }
  180. public function testUpdateCategory(){
  181. $categ = array(
  182. 'id'=>'1',
  183. 'title'=>'DefaultGroupCategory',
  184. 'description'=>'xxxxx',
  185. 'doc_state'=>'xxxx',
  186. 'work_state'=>'xxxxx',
  187. 'calendar_state'=>'',
  188. 'announcements_state'=>'',
  189. 'forum_state'=>'',
  190. 'wiki_state'=>'',
  191. 'self_registration_allowed'=>'',
  192. 'self_unregistration_allowed'=>'',
  193. 'maximum_number_of_students'=>'',
  194. 'groups_per_user'=>'0');
  195. $res = GroupManager::update_category($categ['id'], $categ['title'], $categ['description'],
  196. $categ['doc_state'], $categ['work_state'], $categ['calendar_state'], $categ['announcements_state'],
  197. $categ['forum_state'],$categ['wiki_state'],$categ['self_registration_allowed'],$categ['self_unregistration_allowed'],
  198. $categ['maximum_number_of_students'],$categ['groups_per_user']);
  199. $this->assertTrue(is_null($res));
  200. $this->assertTrue($res ===null);
  201. //var_dump($res);
  202. }
  203. public function testGetCurrenMaxGroupsPerUser(){
  204. $category_id = null;
  205. $course_code = null;
  206. $course_db='';
  207. $res =GroupManager::get_current_max_groups_per_user($category_id = null, $course_code = null);
  208. $this->assertTrue(is_Null($res));
  209. //var_dump($res);
  210. }
  211. public function testSwapCategoryOrder(){
  212. $id1='2';
  213. $id2=null;
  214. $res = GroupManager::swap_category_order($id1,$id2);
  215. $this->assertFalse($res);
  216. $this->assertNull($res,true);
  217. //var_dump($res);
  218. }
  219. public function testGetUsers(){
  220. $group_id='1';
  221. $res =GroupManager::get_users($group_id);
  222. $this->assertTrue(is_array($res));
  223. $this->assertTrue($res ===array());
  224. //var_dump($res);
  225. }
  226. public function testFillGroups(){
  227. $group_ids='2';
  228. global $_course;
  229. $res = GroupManager::fill_groups($group_ids);
  230. $this->assertNull($res);
  231. $this->assertEqual($res,0);
  232. //var_dump($res);
  233. }
  234. /*
  235. public function testNumberOfStudents(){
  236. /*
  237. $connection = &new MockDatabase($this);
  238. $connection->setReturnValue('get_course_table', 'dokeos_0001.group_rel_user');
  239. $connection->get_course_table();
  240. $group_id='2';
  241. $_course = api_get_course_info('0001');
  242. $res = $this->gManager->number_of_students($group_id);
  243. $this->assertTrue($res);
  244. $this->assertTrue(is_string($res));
  245. var_dump($res);
  246. }
  247. */
  248. public function testMaximumNumberOfStudents(){
  249. $group_id ='2';
  250. $_course = api_get_course_info('0001');
  251. $res =GroupManager::maximum_number_of_students($group_id);
  252. $this->assertTrue($res);
  253. $this->assertTrue(is_string($res));
  254. //var_dump($res);
  255. }
  256. public function testUserInNumberOfGroups(){
  257. $user_id='1';
  258. $cat_id = '6';
  259. //$_course = api_get_course_info('0001');
  260. $res = GroupManager::user_in_number_of_groups($user_id,$cat_id);
  261. $this->assertTrue(is_numeric($cat_id));
  262. $this->assertTrue(is_null($res));
  263. //var_dump($res);
  264. }
  265. public function testIsSelfRegistrationAllowed(){
  266. $user_id='1';
  267. $group_id='6';
  268. $res = GroupManager::is_self_registration_allowed($user_id,$group_id);
  269. $this->assertTrue(is_bool($res));
  270. $this->assertTrue($res === false);
  271. //var_dump($res);
  272. }
  273. public function testIsSelfUnregistrationAllowed(){
  274. $user_id='2';
  275. $group_id='6';
  276. $res =GroupManager::is_self_unregistration_allowed($user_id,$group_id);
  277. $this->assertTrue(is_bool($res));
  278. $this->assertTrue($res === false);
  279. //var_dump($res);
  280. }
  281. public function testIsSubscribed(){
  282. $dbase = new MockDataBase();
  283. $db_result ='2';
  284. $user_id='2';
  285. $group_id='6';
  286. $res = GroupManager::is_subscribed($user_id, $group_id);
  287. $dbase->expectOnce('Database::fetch_array($res)');
  288. $this->assertTrue(is_bool($res));
  289. //var_dump($res);
  290. }
  291. public function testCanUserSubscribe(){
  292. $user_id='2';
  293. $group_id='2';
  294. global $_course;
  295. $res = GroupManager::can_user_subscribe($user_id, $group_id);
  296. $this->assertTrue(is_numeric($res));
  297. //var_dump($res);
  298. }
  299. public function testCanUserUnsubscribe(){
  300. $user_id ='6';
  301. $group_id='6';
  302. $res = GroupManager::can_user_unsubscribe($user_id, $group_id);
  303. $this->assertTrue(is_bool($res));
  304. $this->assertTrue($res === false);
  305. //var_dump($res);
  306. }
  307. public function testGetSubscribedUsers(){
  308. $group_id='2';
  309. $res = GroupManager::get_subscribed_users($group_id);
  310. $this->assertTrue(is_array($res));
  311. //var_dump($res);
  312. }
  313. public function testGetSubscribedTutors(){
  314. $group_id='2';
  315. $res = GroupManager::get_subscribed_tutors($group_id);
  316. $this->assertTrue(is_array($res));
  317. //var_dump($res);
  318. }
  319. public function testSubscribeUsers(){
  320. $user_ids = '2';
  321. $group_id= '2';
  322. $res = GroupManager::subscribe_users($user_ids, $group_id);
  323. $this->assertTrue(is_numeric($res));
  324. //var_dump($res);
  325. }
  326. public function testSubscribeTutors(){
  327. $user_ids='2';
  328. $group_id='6';
  329. $res &= GroupManager::subscribe_tutors($user_ids, $group_id);
  330. $this->assertTrue(is_numeric($res));
  331. //var_dump($res);
  332. }
  333. public function testUnsubscribeUsers(){
  334. $user_ids = array(5);
  335. $group_id = 5;
  336. $res &= GroupManager::unsubscribe_users($user_ids, $group_id);
  337. $this->assertTrue(is_numeric($res));
  338. //var_dump($res);
  339. }
  340. public function testUnsubscribeAllUsers(){
  341. $group_ids=array(2,);
  342. $res = GroupManager::unsubscribe_all_users($group_ids);
  343. $this->assertTrue(is_bool($res));
  344. //var_dump($res);
  345. }
  346. public function testUnsubscribeAllTutors(){
  347. $group_ids =array(6,9,10,11,14,15,16,19);
  348. $res = GroupManager::unsubscribe_all_tutors($group_ids);
  349. $this->assertTrue(is_bool($res));
  350. //var_dump($res);
  351. }
  352. public function testIsTutorOfGroup(){
  353. $user_id=2;
  354. $group_id=2;
  355. $res = GroupManager::is_tutor_of_group($user_id,$group_id);
  356. $this->assertTrue(is_bool($res));
  357. //var_dump($res);
  358. }
  359. public function testIsUserInGroup(){
  360. $user_id= 2;
  361. $group_id= 4;
  362. $res =GroupManager::is_user_in_group($user_id, $group_id);
  363. $this->assertTrue(is_bool($res));
  364. $this->assertTrue($res === false);
  365. $this->assertFalse($res);
  366. //var_dump($res);
  367. }
  368. public function testGetAllTutors(){
  369. $res =GroupManager::get_all_tutors();
  370. $this->assertTrue(is_array($res));
  371. //var_dump($res);
  372. }
  373. public function testIsTutor(){
  374. $user_id = 2;
  375. global $_course;
  376. $res = GroupManager::is_tutor($user_id);
  377. $this->assertTrue(is_bool($res));
  378. $this->assertTrue($res === false);
  379. //var_dump($res);
  380. }
  381. public function testGetGroupIds(){
  382. $course_db='';
  383. $user_id=2;
  384. $res = GroupManager::get_group_ids($course_db,$user_id);
  385. $this->assertTrue(is_array($res));
  386. //var_dump($res);
  387. }
  388. public function testGetCompleteListOfUsersThatCanBeAddedToGroup(){
  389. global $_course, $_user;
  390. $course_code=0001;
  391. $group_id=2;
  392. $res = GroupManager::get_complete_list_of_users_that_can_be_added_to_group($course_code, $group_id);
  393. $this->assertTrue(is_null($res));
  394. //var_dump($res);
  395. }
  396. public function testfilter_duplicates(){
  397. $user_array_in='';
  398. $compare_field='';
  399. $res = GroupManager::filter_duplicates($user_array_in, $compare_field);
  400. $this->assertTrue(is_array($res));
  401. //var_dump($res);
  402. }
  403. /*
  404. public function testFilterUsersAlreadyInGroup(){
  405. $user_array_in='2';
  406. $group_id=2;
  407. $res = $this->gManager->filter_users_already_in_group($user_array_in, $group_id);
  408. $this->assertTrue(is_array($res));
  409. //var_dump($res);
  410. }*/
  411. public function testFilterOnlyStudents(){
  412. $user_array_in='';
  413. $res= GroupManager::filter_only_students($user_array_in);
  414. $this->assertTrue(is_array($res));
  415. //var_dump($res);
  416. }
  417. public function testUserHasAccess(){
  418. $user_id='2';
  419. $group_id='5';
  420. $tool='wiki_state';
  421. $res = GroupManager::user_has_access($user_id, $group_id, $tool);
  422. $this->assertTrue(is_bool($res));
  423. $this->assertTrue($res === false);
  424. //var_dump($res);
  425. }
  426. public function testGetUserGroupName(){
  427. $user_id='';
  428. $res=GroupManager::get_user_group_name($user_id);
  429. $this->assertTrue(is_array($res));
  430. //var_dump($res);
  431. }
  432. }
  433. ?>