1<?php
2
3namespace dokuwiki\plugin\struct\test\types;
4
5use dokuwiki\plugin\struct\meta\ValidationException;
6use dokuwiki\plugin\struct\test\StructTest;
7use dokuwiki\plugin\struct\types\Date;
8
9/**
10 * @group plugin_struct
11 * @group plugins
12 */
13class DateTest extends StructTest
14{
15
16    /**
17     * DataProvider for successful validations
18     */
19    public function validate_success()
20    {
21        return [
22            ['2017-04-12', '2017-04-12'],
23            ['2017-04-12 ', '2017-04-12'],
24            [' 2017-04-12 ', '2017-04-12'],
25            ['2017-04-12 10:11', '2017-04-12'],
26            ['2017-04-12 10:11:12', '2017-04-12'],
27            ['2017-04-12 whatever', '2017-04-12'],
28            ['2017-4-3', '2017-04-03'],
29            ['917-4-3', '917-04-03'],
30        ];
31    }
32
33    /**
34     * @dataProvider validate_success
35     */
36    public function test_validation_success($input, $expect)
37    {
38        $date = new Date();
39
40        $this->assertEquals($expect, $date->validate($input));
41    }
42
43
44    /**
45     * DataProvider for failed validations
46     */
47    public function validate_fail()
48    {
49        return [
50            ['2017-02-31'],
51            ['2017-13-31'],
52        ];
53    }
54
55    /**
56     * @dataProvider validate_fail
57     */
58    public function test_validation_fail($input)
59    {
60        $this->expectException(ValidationException::class);
61        $date = new Date();
62
63        $date->validate($input);
64    }
65}
66