ILIAS  release_7 Revision v7.30-3-g800a261c036
ilStudyProgrammeDeadlineSettingsTest.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 2019 Daniel Weise <daniel.weise@concepts-and-training.de> Extended GPL, see docs/LICENSE */
4
5declare(strict_types=1);
6
7use PHPUnit\Framework\TestCase;
8
10{
14 const VALID_DEADLINE_DATE = '2019-02-14';
15
16 public function testSuccessfulCreate() : void
17 {
19 self::VALID_DEADLINE_PERIOD_1,
20 new DateTime(self::VALID_DEADLINE_DATE)
21 );
22
23 $this->assertEquals(self::VALID_DEADLINE_PERIOD_1, $obj->getDeadlinePeriod());
24 $this->assertEquals(self::VALID_DEADLINE_DATE, $obj->getDeadlineDate()->format('Y-m-d'));
25 }
26
28 {
29 try {
31 self::INVALID_DEADLINE_PERIOD,
32 new DateTime(self::VALID_DEADLINE_DATE)
33 );
34 $this->assertTrue(false);
35 } catch (InvalidArgumentException $e) {
36 $this->assertTrue(true);
37 }
38 }
39
40 public function testSuccessfulWithDeadlinePeriod() : void
41 {
43 self::VALID_DEADLINE_PERIOD_1,
44 new DateTime(self::VALID_DEADLINE_DATE)
45 );
46
47 $new = $obj->withDeadlinePeriod(self::VALID_DEADLINE_PERIOD_2);
48
49 $this->assertEquals(self::VALID_DEADLINE_PERIOD_1, $obj->getDeadlinePeriod());
50 $this->assertEquals(self::VALID_DEADLINE_PERIOD_2, $new->getDeadlinePeriod());
51 }
52
53 public function testFailWithDeadlinePeriod() : void
54 {
56 self::VALID_DEADLINE_PERIOD_1,
57 new DateTime(self::VALID_DEADLINE_DATE)
58 );
59
60 try {
61 $obj->withDeadlinePeriod(self::INVALID_DEADLINE_PERIOD);
62 $this->assertTrue(false);
63 } catch (InvalidArgumentException $e) {
64 $this->assertTrue(true);
65 }
66 }
67
68 public function testToFormInput() : void
69 {
70 $lng = $this->createMock(ilLanguage::class);
71 $df = new ILIAS\Data\Factory();
72 $refinery = new ILIAS\Refinery\Factory($df, $lng);
73
75 new ILIAS\UI\Implementation\Component\SignalGenerator(),
76 $df,
77 $refinery,
78 $lng
79 );
80
82 self::VALID_DEADLINE_PERIOD_1,
83 new DateTime(self::VALID_DEADLINE_DATE)
84 );
85
86 $lng->expects($this->atLeastOnce())
87 ->method('txt')
88 ->withConsecutive(
89 ['prg_no_deadline'],
90 ['prg_deadline_period_desc'],
91 ['prg_deadline_period'],
92 ['prg_deadline_date_desc'],
93 ['prg_deadline_date'],
94 ['prg_deadline_settings']
95 )
96 ->will($this->onConsecutiveCalls(
97 'prg_no_deadline',
98 'prg_deadline_period_desc',
99 'prg_deadline_period',
100 'prg_deadline_date_desc',
101 'prg_deadline_date',
102 'prg_deadline_settings'
103 ))
104 ;
105
106 $field = $obj->toFormInput(
107 $f,
108 $lng,
109 $refinery,
110 $df
111 );
112
113 $switchable_group = $field->getInputs()['prg_deadline'];
114 $this->assertInstanceOf(
115 'ILIAS\UI\Implementation\Component\Input\Field\SwitchableGroup',
116 $switchable_group
117 );
118
119 $date_value = $switchable_group->getValue()[1]['deadline_date'];
120 $date = (new DateTime($date_value))->format('Y-m-d');
121 $this->assertEquals(self::VALID_DEADLINE_DATE, $date);
122
123 $inputs = $switchable_group->getInputs();
124 foreach ($inputs as $input) {
125 $this->assertInstanceOf(
126 'ILIAS\UI\Implementation\Component\Input\Field\Group',
127 $input
128 );
129 }
130 }
131}
An exception for terminatinating execution or to throw for unit testing.
Builds data types.
Definition: Factory.php:20
Class ChatMainBarProvider \MainMenu\Provider.
Class Factory.
$lng