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
/**
18
 * This file contains unit test related to xAPI library.
19
 *
20
 * @package    core_xapi
21
 * @copyright  2020 Ferran Recio
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
namespace core_xapi\local\statement;
26
 
27
use advanced_testcase;
28
use core_xapi\iri;
29
use core_xapi\xapi_exception;
30
 
31
/**
32
 * Contains test cases for testing statement attachment class.
33
 *
34
 * @package    core_xapi
35
 * @since      Moodle 3.9
36
 * @copyright  2020 Ferran Recio
37
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
38
 */
39
class item_attachment_test extends advanced_testcase {
40
 
41
    /**
42
     * Test item creation.
43
     */
11 efrain 44
    public function test_create(): void {
1 efrain 45
 
46
        $data = $this->get_generic_data();
47
        $item = item_attachment::create_from_data($data);
48
 
49
        $this->assertEquals(json_encode($item), json_encode($data));
50
    }
51
 
52
    /**
53
     * return a generic data to create a valid item.
54
     *
55
     * @return \stdClass the creation data
56
     */
57
    private function get_generic_data(): \stdClass {
58
        return (object) [
59
            'usageType' => iri::generate('example', 'attachment'),
60
            'display' => (object) [
61
                'en-US' => 'Example',
62
            ],
63
            'description' => (object) [
64
                'en-US' => 'Description example',
65
            ],
66
            "contentType" => "image/jpg",
67
            "length" => 1234,
68
            "sha2" => "b94c0f1cffb77475c6f1899111a0181efe1d6177"
69
        ];
70
    }
71
 
72
    /**
73
     * Test for invalid values.
74
     *
75
     * @dataProvider invalid_values_data
76
     * @param string $attr attribute to modify
77
     * @param mixed $newvalue new value (null means unset)
78
     */
79
    public function test_invalid_values(string $attr, $newvalue): void {
80
 
81
        $data = $this->get_generic_data();
82
        if ($newvalue === null) {
83
            unset($data->$attr);
84
        } else {
85
            $data->$attr = $newvalue;
86
        }
87
 
88
        $this->expectException(xapi_exception::class);
89
        $item = item_attachment::create_from_data($data);
90
    }
91
 
92
    /**
93
     * Data provider for the test_invalid_values tests.
94
     *
95
     * @return  array
96
     */
97
    public function invalid_values_data(): array {
98
        return [
99
            'No usageType attachment' => [
100
                'usageType', null
101
            ],
102
            'Invalid usageType attachment' => [
103
                'usageType', 'Invalid IRI'
104
            ],
105
            'No display attachment' => [
106
                'display', null
107
            ],
108
            'No contentType attachment' => [
109
                'contentType', null
110
            ],
111
            'No length attachment' => [
112
                'length', null
113
            ],
114
            'Invalid length attachment' => [
115
                'length', 'Invalid'
116
            ],
117
            'No sha2 attachment' => [
118
                'sha2', null
119
            ],
120
        ];
121
    }
122
}