| Línea 31... |
Línea 31... |
| 31 |
*
|
31 |
*
|
| 32 |
* @package mod_forum
|
32 |
* @package mod_forum
|
| 33 |
* @copyright 2019 Ryan Wyllie <ryan@moodle.com>
|
33 |
* @copyright 2019 Ryan Wyllie <ryan@moodle.com>
|
| 34 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
34 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
| 35 |
*/
|
35 |
*/
|
| 36 |
class vaults_discussion_list_test extends \advanced_testcase {
|
36 |
final class vaults_discussion_list_test extends \advanced_testcase {
|
| 37 |
// Make use of the test generator trait.
|
37 |
// Make use of the test generator trait.
|
| 38 |
use mod_forum_tests_generator_trait;
|
38 |
use mod_forum_tests_generator_trait;
|
| Línea 39... |
Línea 39... |
| 39 |
|
39 |
|
| 40 |
/** @var \mod_forum\local\vaults\discussion_list */
|
40 |
/** @var \mod_forum\local\vaults\discussion_list */
|
| Línea 41... |
Línea 41... |
| 41 |
private $vault;
|
41 |
private $vault;
|
| 42 |
|
42 |
|
| 43 |
/**
|
43 |
/**
|
| 44 |
* Set up function for tests.
|
44 |
* Set up function for tests.
|
| - |
|
45 |
*/
|
| 45 |
*/
|
46 |
public function setUp(): void {
|
| 46 |
public function setUp(): void {
|
47 |
parent::setUp();
|
| 47 |
$vaultfactory = \mod_forum\local\container::get_vault_factory();
|
48 |
$vaultfactory = \mod_forum\local\container::get_vault_factory();
|
| Línea 48... |
Línea 49... |
| 48 |
$this->vault = $vaultfactory->get_discussions_in_forum_vault();
|
49 |
$this->vault = $vaultfactory->get_discussions_in_forum_vault();
|
| Línea 255... |
Línea 256... |
| 255 |
self::setUser($user);
|
256 |
self::setUser($user);
|
| 256 |
$course = $datagenerator->create_course();
|
257 |
$course = $datagenerator->create_course();
|
| 257 |
$forum = $datagenerator->create_module('forum', ['course' => $course->id]);
|
258 |
$forum = $datagenerator->create_module('forum', ['course' => $course->id]);
|
| 258 |
$this->getDataGenerator()->enrol_user($user->id, $course->id, null, 'manual');
|
259 |
$this->getDataGenerator()->enrol_user($user->id, $course->id, null, 'manual');
|
| Línea 259... |
Línea 260... |
| 259 |
|
260 |
|
| 260 |
$this->assertEquals([], $vault->get_from_forum_id($forum->id, true, true,
|
261 |
$this->assertEquals([], $vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, $user->id,
|
| Línea 261... |
Línea 262... |
| 261 |
null, 0, 0, $user));
|
262 |
null, 0, 0));
|
| 262 |
|
263 |
|
| 263 |
$now = time();
|
264 |
$now = time();
|
| 264 |
[$discussion1, $post1] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 10, 'timemodified' => 1]);
|
265 |
[$discussion1, $post1] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 10, 'timemodified' => $now + 1]);
|
| - |
|
266 |
[$discussion2, $post2] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 9, 'timemodified' => $now + 2]);
|
| - |
|
267 |
[$hiddendiscussion, $post3] = $this->helper_post_to_forum(
|
| - |
|
268 |
$forum,
|
| - |
|
269 |
$user,
|
| 265 |
[$discussion2, $post2] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 9, 'timemodified' => 2]);
|
270 |
['timestart' => $now + 10, 'timemodified' => $now + 3]
|
| 266 |
[$hiddendiscussion, $post3] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now + 10, 'timemodified' => 3]);
|
271 |
);
|
| 267 |
[$groupdiscussion1, $post4] = $this->helper_post_to_forum(
|
272 |
[$groupdiscussion1, $post4] = $this->helper_post_to_forum(
|
| 268 |
$forum,
|
273 |
$forum,
|
| 269 |
$user,
|
274 |
$user,
|
| 270 |
['timestart' => $now - 8, 'timemodified' => 4, 'groupid' => 1]
|
275 |
['timestart' => $now - 8, 'timemodified' => $now + 4, 'groupid' => 1]
|
| 271 |
);
|
276 |
);
|
| 272 |
[$groupdiscussion2, $post5] = $this->helper_post_to_forum(
|
277 |
[$groupdiscussion2, $post5] = $this->helper_post_to_forum(
|
| 273 |
$forum,
|
278 |
$forum,
|
| 274 |
$user,
|
279 |
$user,
|
| 275 |
['timestart' => $now - 7, 'timemodified' => 5, 'groupid' => 2]
|
280 |
['timestart' => $now - 7, 'timemodified' => $now + 5, 'groupid' => 2]
|
| 276 |
);
|
281 |
);
|
| 277 |
[$hiddengroupdiscussion, $post6] = $this->helper_post_to_forum(
|
282 |
[$hiddengroupdiscussion, $post6] = $this->helper_post_to_forum(
|
| 278 |
$forum,
|
283 |
$forum,
|
| 279 |
$user,
|
284 |
$user,
|
| Línea 280... |
Línea 285... |
| 280 |
['timestart' => $now + 11, 'timemodified' => 6, 'groupid' => 3]
|
285 |
['timestart' => $now + 11, 'timemodified' => $now + 6, 'groupid' => 3]
|
| 281 |
);
|
286 |
);
|
| 282 |
|
287 |
|
| Línea 353... |
Línea 358... |
| 353 |
|
358 |
|
| 354 |
// Sort discussions by last post DESC.
|
359 |
// Sort discussions by last post DESC.
|
| 355 |
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true,
|
360 |
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true,
|
| 356 |
$user->id, $vault::SORTORDER_LASTPOST_DESC, 0, 0));
|
361 |
$user->id, $vault::SORTORDER_LASTPOST_DESC, 0, 0));
|
| 357 |
$this->assertCount(6, $summaries);
|
362 |
$this->assertCount(6, $summaries);
|
| 358 |
$this->assertEquals($groupdiscussion2->id, $summaries[0]->get_discussion()->get_id());
|
363 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[0]->get_discussion()->get_id());
|
| 359 |
$this->assertEquals($groupdiscussion1->id, $summaries[1]->get_discussion()->get_id());
|
364 |
$this->assertEquals($hiddendiscussion->id, $summaries[1]->get_discussion()->get_id());
|
| 360 |
$this->assertEquals($hiddendiscussion->id, $summaries[2]->get_discussion()->get_id());
|
365 |
$this->assertEquals($groupdiscussion2->id, $summaries[2]->get_discussion()->get_id());
|
| 361 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[3]->get_discussion()->get_id());
|
366 |
$this->assertEquals($groupdiscussion1->id, $summaries[3]->get_discussion()->get_id());
|
| 362 |
$this->assertEquals($discussion2->id, $summaries[4]->get_discussion()->get_id());
|
367 |
$this->assertEquals($discussion2->id, $summaries[4]->get_discussion()->get_id());
|
| Línea 363... |
Línea 368... |
| 363 |
$this->assertEquals($discussion1->id, $summaries[5]->get_discussion()->get_id());
|
368 |
$this->assertEquals($discussion1->id, $summaries[5]->get_discussion()->get_id());
|
| 364 |
|
369 |
|
| 365 |
// Sort discussions by last post ASC.
|
370 |
// Sort discussions by last post ASC.
|
| 366 |
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true,
|
371 |
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true,
|
| 367 |
$user->id, $vault::SORTORDER_LASTPOST_ASC, 0, 0));
|
372 |
$user->id, $vault::SORTORDER_LASTPOST_ASC, 0, 0));
|
| 368 |
$this->assertCount(6, $summaries);
|
373 |
$this->assertCount(6, $summaries);
|
| 369 |
$this->assertEquals($discussion1->id, $summaries[0]->get_discussion()->get_id());
|
374 |
$this->assertEquals($discussion1->id, $summaries[0]->get_discussion()->get_id());
|
| 370 |
$this->assertEquals($discussion2->id, $summaries[1]->get_discussion()->get_id());
|
375 |
$this->assertEquals($discussion2->id, $summaries[1]->get_discussion()->get_id());
|
| 371 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[2]->get_discussion()->get_id());
|
376 |
$this->assertEquals($groupdiscussion1->id, $summaries[2]->get_discussion()->get_id());
|
| 372 |
$this->assertEquals($hiddendiscussion->id, $summaries[3]->get_discussion()->get_id());
|
377 |
$this->assertEquals($groupdiscussion2->id, $summaries[3]->get_discussion()->get_id());
|
| Línea 373... |
Línea 378... |
| 373 |
$this->assertEquals($groupdiscussion1->id, $summaries[4]->get_discussion()->get_id());
|
378 |
$this->assertEquals($hiddendiscussion->id, $summaries[4]->get_discussion()->get_id());
|
| 374 |
$this->assertEquals($groupdiscussion2->id, $summaries[5]->get_discussion()->get_id());
|
379 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[5]->get_discussion()->get_id());
|
| 375 |
|
380 |
|
| 376 |
// Sort discussions by replies DESC.
|
381 |
// Sort discussions by replies DESC.
|
| Línea 419... |
Línea 424... |
| 419 |
|
424 |
|
| 420 |
// Sort discussions when there is a pinned discussion.
|
425 |
// Sort discussions when there is a pinned discussion.
|
| 421 |
$this->pin_discussion($discussion1);
|
426 |
$this->pin_discussion($discussion1);
|
| Línea 422... |
Línea 427... |
| 422 |
$this->pin_discussion($hiddendiscussion);
|
427 |
$this->pin_discussion($hiddendiscussion);
|
| 423 |
|
428 |
|
| 424 |
$summaries = array_values($vault->get_from_forum_id($forum->id, true, null,
|
429 |
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null,
|
| 425 |
$vault::SORTORDER_LASTPOST_DESC, 0, 0));
|
430 |
$vault::SORTORDER_LASTPOST_DESC, 0, 0));
|
| 426 |
$this->assertCount(6, $summaries);
|
431 |
$this->assertCount(6, $summaries);
|
| 427 |
$this->assertEquals($hiddendiscussion->id, $summaries[0]->get_discussion()->get_id());
|
432 |
$this->assertEquals($hiddendiscussion->id, $summaries[0]->get_discussion()->get_id());
|
| 428 |
$this->assertEquals($discussion1->id, $summaries[1]->get_discussion()->get_id());
|
433 |
$this->assertEquals($discussion1->id, $summaries[1]->get_discussion()->get_id());
|
| 429 |
$this->assertEquals($groupdiscussion2->id, $summaries[2]->get_discussion()->get_id());
|
434 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[2]->get_discussion()->get_id());
|
| 430 |
$this->assertEquals($groupdiscussion1->id, $summaries[3]->get_discussion()->get_id());
|
435 |
$this->assertEquals($groupdiscussion2->id, $summaries[3]->get_discussion()->get_id());
|
| Línea 431... |
Línea 436... |
| 431 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[4]->get_discussion()->get_id());
|
436 |
$this->assertEquals($groupdiscussion1->id, $summaries[4]->get_discussion()->get_id());
|
| 432 |
$this->assertEquals($discussion2->id, $summaries[5]->get_discussion()->get_id());
|
437 |
$this->assertEquals($discussion2->id, $summaries[5]->get_discussion()->get_id());
|
| 433 |
|
438 |
|
| 434 |
$summaries = array_values($vault->get_from_forum_id($forum->id, true, null,
|
439 |
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null,
|
| 435 |
$vault::SORTORDER_LASTPOST_ASC, 0, 0));
|
440 |
$vault::SORTORDER_LASTPOST_ASC, 0, 0));
|
| 436 |
$this->assertCount(6, $summaries);
|
441 |
$this->assertCount(6, $summaries);
|
| 437 |
$this->assertEquals($discussion1->id, $summaries[0]->get_discussion()->get_id());
|
442 |
$this->assertEquals($discussion1->id, $summaries[0]->get_discussion()->get_id());
|
| 438 |
$this->assertEquals($hiddendiscussion->id, $summaries[1]->get_discussion()->get_id());
|
443 |
$this->assertEquals($hiddendiscussion->id, $summaries[1]->get_discussion()->get_id());
|
| 439 |
$this->assertEquals($discussion2->id, $summaries[2]->get_discussion()->get_id());
|
444 |
$this->assertEquals($discussion2->id, $summaries[2]->get_discussion()->get_id());
|
| Línea 440... |
Línea 445... |
| 440 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[3]->get_discussion()->get_id());
|
445 |
$this->assertEquals($groupdiscussion1->id, $summaries[3]->get_discussion()->get_id());
|
| 441 |
$this->assertEquals($groupdiscussion1->id, $summaries[4]->get_discussion()->get_id());
|
446 |
$this->assertEquals($groupdiscussion2->id, $summaries[4]->get_discussion()->get_id());
|
| 442 |
$this->assertEquals($groupdiscussion2->id, $summaries[5]->get_discussion()->get_id());
|
447 |
$this->assertEquals($hiddengroupdiscussion->id, $summaries[5]->get_discussion()->get_id());
|
| 443 |
|
448 |
|
| 444 |
$summaries = array_values($vault->get_from_forum_id($forum->id, true, null,
|
449 |
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null,
|
| 445 |
$vault::SORTORDER_REPLIES_DESC, 0, 0));
|
450 |
$vault::SORTORDER_REPLIES_DESC, 0, 0));
|