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\DateTime;
8
9/**
10 * @group plugin_struct
11 * @group plugins
12 */
13class DateTimeTest 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 00:00'],
23            ['2017-04-12 ', '2017-04-12 00:00'],
24            [' 2017-04-12 ', '2017-04-12 00:00'],
25            ['2017-04-12 10:11', '2017-04-12 10:11'],
26            ['2017-04-12 10:11:12', '2017-04-12 10:11'],
27            ['2017-04-12 whatever', '2017-04-12 00:00'],
28            ['2017-4-3', '2017-04-03 00:00'],
29            ['917-4-3', '917-04-03 00:00'],
30        ];
31    }
32
33    /**
34     * @dataProvider validate_success
35     */
36    public function test_validation_success($input, $expect)
37    {
38        $date = new DateTime();
39
40        $this->assertEquals($expect, $date->validate($input));
41    }
42
43    /**
44     * DataProvider for failed validations
45     */
46    public function validate_fail()
47    {
48        return [
49            ['2017-02-31'],
50            ['2017-13-31'],
51            ['2017-04-12 24:00'],
52            ['2017-04-12 23:70'],
53        ];
54    }
55
56    /**
57     * @dataProvider validate_fail
58     */
59    public function test_validation_fail($input)
60    {
61        $this->expectException(ValidationException::class);
62        $date = new DateTime();
63        $date->validate($input);
64    }
65}
66