ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
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 
5 declare(strict_types=1);
6 
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 
27  public function testFailCreateWithInvalidDeadlinePeriod() : void
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 }
Class Factory.
Class ChatMainBarProvider .
$lng
Builds data types.
Definition: Factory.php:19