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 * Tests for the dataformat plugins
19 *
20 * @package    core
21 * @copyright  2020 Paul Holden <paulh@moodle.com>
22 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 */
24
25namespace core;
26
27use core_component;
28use core\dataformat;
29
30/**
31 * Dataformat tests
32 *
33 * @package    core
34 * @copyright  2020 Paul Holden <paulh@moodle.com>
35 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36 */
37class dataformat_testcase extends \advanced_testcase {
38
39    /**
40     * Data provider for {@see test_write_data)
41     *
42     * @return array
43     */
44    public function write_data_provider(): array {
45        $data = [];
46
47        $dataformats = core_component::get_plugin_list('dataformat');
48        foreach ($dataformats as $dataformat => $unused) {
49            $data[] = [$dataformat];
50        }
51
52        return $data;
53    }
54
55    /**
56     * Test writing dataformat export to local file
57     *
58     * @param string $dataformat
59     * @return void
60     *
61     * @dataProvider write_data_provider
62     */
63    public function test_write_data(string $dataformat): void {
64        $columns = ['fruit', 'colour', 'animal'];
65        $rows = [
66            ['banana', 'yellow', 'monkey'],
67            ['apple', 'red', 'wolf'],
68            ['melon', 'green', 'aardvark'],
69        ];
70
71        // Export to file. Assert that the exported file exists and is non-zero in size.
72        $exportfile = dataformat::write_data('My export', $dataformat, $columns, $rows);
73        $this->assertFileExists($exportfile);
74        $this->assertGreaterThan(0, filesize($exportfile));
75    }
76}
77