Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
namespace mod_forum;
18
 
19
use mod_forum_tests_generator_trait;
20
 
21
defined('MOODLE_INTERNAL') || die();
22
 
23
require_once(__DIR__ . '/generator_trait.php');
24
 
25
/**
26
 * The forum vault tests.
27
 *
28
 * @package    mod_forum
29
 * @copyright  2019 Ryan Wyllie <ryan@moodle.com>
30
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
31
 * @coversDefaultClass \mod_forum\local\vaults\forum
32
 */
33
class vaults_forum_test extends \advanced_testcase {
34
    // Make use of the test generator trait.
35
    use mod_forum_tests_generator_trait;
36
 
37
    /**
38
     * Test get_from_id.
39
     *
40
     * @covers ::get_from_id
41
     */
11 efrain 42
    public function test_get_from_id(): void {
1 efrain 43
        $this->resetAfterTest();
44
 
45
        $vaultfactory = \mod_forum\local\container::get_vault_factory();
46
        $vault = $vaultfactory->get_forum_vault();
47
        $datagenerator = $this->getDataGenerator();
48
        $user = $datagenerator->create_user();
49
        $course = $datagenerator->create_course();
50
        $forum = $datagenerator->create_module('forum', ['course' => $course->id]);
51
 
52
        $entity = $vault->get_from_id($forum->id);
53
 
54
        $this->assertEquals($forum->id, $entity->get_id());
55
    }
56
 
57
    /**
58
     * Test get_from_course_module_id.
59
     *
60
     * @covers ::get_from_course_module_id
61
     */
11 efrain 62
    public function test_get_from_course_module_id(): void {
1 efrain 63
        $this->resetAfterTest();
64
 
65
        $vaultfactory = \mod_forum\local\container::get_vault_factory();
66
        $vault = $vaultfactory->get_forum_vault();
67
        $datagenerator = $this->getDataGenerator();
68
        $user = $datagenerator->create_user();
69
        $course = $datagenerator->create_course();
70
        $forum1 = $datagenerator->create_module('forum', ['course' => $course->id]);
71
        $forum2 = $datagenerator->create_module('forum', ['course' => $course->id]);
72
        $coursemodule1 = get_coursemodule_from_instance('forum', $forum1->id);
73
        $coursemodule2 = get_coursemodule_from_instance('forum', $forum2->id);
74
 
75
        // Don't exist.
76
        $entity = $vault->get_from_course_module_id($coursemodule1->id + 100);
77
        $this->assertEquals(null, $entity);
78
 
79
        $entity = $vault->get_from_course_module_id($coursemodule1->id);
80
        $this->assertEquals($forum1->id, $entity->get_id());
81
    }
82
 
83
    /**
84
     * Test get_from_course_module_ids.
85
     *
86
     * @covers ::get_from_course_module_ids
87
     */
11 efrain 88
    public function test_get_from_course_module_ids(): void {
1 efrain 89
        $this->resetAfterTest();
90
 
91
        $vaultfactory = \mod_forum\local\container::get_vault_factory();
92
        $vault = $vaultfactory->get_forum_vault();
93
        $datagenerator = $this->getDataGenerator();
94
        $user = $datagenerator->create_user();
95
        $course = $datagenerator->create_course();
96
        $forum1 = $datagenerator->create_module('forum', ['course' => $course->id]);
97
        $forum2 = $datagenerator->create_module('forum', ['course' => $course->id]);
98
        $coursemodule1 = get_coursemodule_from_instance('forum', $forum1->id);
99
        $coursemodule2 = get_coursemodule_from_instance('forum', $forum2->id);
100
 
101
        // Don't exist.
102
        $entities = array_values($vault->get_from_course_module_ids([$coursemodule1->id + 100, $coursemodule1->id + 200]));
103
        $this->assertEquals([], $entities);
104
 
105
        $entities = array_values($vault->get_from_course_module_ids([$coursemodule1->id, $coursemodule2->id]));
106
        usort($entities, function($a, $b) {
107
            return $a->get_id() <=> $b->get_id();
108
        });
109
        $this->assertCount(2, $entities);
110
        $this->assertEquals($forum1->id, $entities[0]->get_id());
111
        $this->assertEquals($forum2->id, $entities[1]->get_id());
112
 
113
        $entities = array_values($vault->get_from_course_module_ids([$coursemodule1->id]));
114
        usort($entities, function($a, $b) {
115
            return $a->get_id() <=> $b->get_id();
116
        });
117
        $this->assertCount(1, $entities);
118
        $this->assertEquals($forum1->id, $entities[0]->get_id());
119
    }
120
 
121
    /**
122
     * Test get_from_post_id.
123
     *
124
     * @covers ::get_from_post_id
125
     */
11 efrain 126
    public function test_get_from_post_id(): void {
1 efrain 127
        $this->resetAfterTest();
128
 
129
        $vaultfactory = \mod_forum\local\container::get_vault_factory();
130
        $vault = $vaultfactory->get_forum_vault();
131
 
132
        $datagenerator = $this->getDataGenerator();
133
        $user = $datagenerator->create_user();
134
        $course = $datagenerator->create_course();
135
        $forum = $datagenerator->create_module('forum', ['course' => $course->id]);
136
        [$discussion, $post] = $this->helper_post_to_forum($forum, $user);
137
        $reply = $this->helper_reply_to_post($post, $user);
138
 
139
        $otherforum = $datagenerator->create_module('forum', ['course' => $course->id]);
140
        [$otherdiscussion, $otherpost] = $this->helper_post_to_forum($otherforum, $user);
141
        $otherreply = $this->helper_reply_to_post($otherpost, $user);
142
 
143
        $entity = $vault->get_from_post_id($post->id);
144
        $this->assertEquals($forum->id, $entity->get_id());
145
 
146
        $entity = $vault->get_from_post_id($reply->id);
147
        $this->assertEquals($forum->id, $entity->get_id());
148
 
149
        $this->assertEmpty($vault->get_from_post_id(-1));
150
    }
151
}