ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ilTermsOfServiceAcceptanceHistoryCriteriaBagTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
26 {
28  {
29  $configCrit1 = $this->getMockBuilder(ilTermsOfServiceCriterionConfig::class)->getMock();
30 
31  $configCrit1
32  ->method('jsonSerialize')
33  ->willReturn([
34  'usr_language' => 'de'
35  ]);
36 
37  $configCrit2 = $this->getMockBuilder(ilTermsOfServiceCriterionConfig::class)->getMock();
38 
39  $configCrit2
40  ->method('jsonSerialize')
41  ->willReturn([
42  'usr_global_role' => 4
43  ]);
44 
45  $criterion1 = $this->getMockBuilder(ilTermsOfServiceEvaluableCriterion::class)->getMock();
46 
47  $criterion1
48  ->method('getCriterionId')
49  ->willReturn('crit1');
50 
51  $criterion1
52  ->method('getCriterionValue')
53  ->willReturn($configCrit1);
54 
55  $criterion2 = $this->getMockBuilder(ilTermsOfServiceEvaluableCriterion::class)->getMock();
56 
57  $criterion2
58  ->method('getCriterionId')
59  ->willReturn('crit2');
60 
61  $criterion2
62  ->method('getCriterionValue')
63  ->willReturn($configCrit2);
64 
65  $data = [
66  $criterion1,
67  $criterion2
68  ];
69 
71 
72  $this->assertCount(count($data), $bag);
73  $this->assertArrayHasKey(0, $bag);
74  $this->assertArrayHasKey(1, $bag);
75  $this->assertArrayHasKey('id', $bag[0]);
76  $this->assertArrayHasKey('value', $bag[0]);
77  $this->assertArrayHasKey('id', $bag[1]);
78  $this->assertArrayHasKey('value', $bag[1]);
79  $this->assertSame(
80  '[{"id":"crit1","value":{"usr_language":"de"}},{"id":"crit2","value":{"usr_global_role":4}}]',
81  $bag->toJson()
82  );
83 
84  return $bag;
85  }
86 
91  {
93  $this->assertSame($bag->toJson(), $newBag->toJson());
94  }
95 
97  {
98  $configCrit1 = $this->getMockBuilder(ilTermsOfServiceCriterionConfig::class)->getMock();
99 
100  $criterion1 = $this->getMockBuilder(ilTermsOfServiceEvaluableCriterion::class)->getMock();
101 
102  $criterion1
103  ->method('getCriterionId')
104  ->willReturn('crit1');
105 
106  $criterion1
107  ->method('getCriterionValue')
108  ->willReturn($configCrit1);
109 
110  $this->expectException(ilTermsOfServiceUnexpectedCriteriaBagContentException::class);
111 
113  $criterion1,
114  5
115  ]);
116  }
117 
118  public function invalidJsonDataProvider(): array
119  {
120  $object = new stdClass();
121  $object->not_expected = 'phpunit';
122  $object->value = ['id' => $object->not_expected, 'value' => ['usr_language' => 'de']];
123 
124  $data = [
125  'Float' => [json_encode(5.1, JSON_THROW_ON_ERROR)],
126  'Integer' => [json_encode(5, JSON_THROW_ON_ERROR)],
127  'String' => [json_encode('5', JSON_THROW_ON_ERROR)],
128  'Null' => [json_encode(null, JSON_THROW_ON_ERROR)],
129  'Object' => [json_encode($object, JSON_THROW_ON_ERROR)],
130  'Bool' => [json_encode(true, JSON_THROW_ON_ERROR)],
131  ];
132 
133  $arrayOfTypes = [];
134 
135  foreach ($data as $type => $values) {
136  $arrayOfTypes['Array of ' . $type] = [json_encode([json_decode($values[0], false, 512, JSON_THROW_ON_ERROR)], JSON_THROW_ON_ERROR)];
137  }
138 
139  return $data + $arrayOfTypes;
140  }
141 
146  {
147  $configCrit1 = $this->getMockBuilder(ilTermsOfServiceCriterionConfig::class)->getMock();
148 
149  $criterion1 = $this->getMockBuilder(ilTermsOfServiceEvaluableCriterion::class)->getMock();
150 
151  $criterion1
152  ->method('getCriterionId')
153  ->willReturn('crit1');
154 
155  $criterion1
156  ->method('getCriterionValue')
157  ->willReturn($configCrit1);
158 
159  $this->expectException(ilTermsOfServiceUnexpectedCriteriaBagContentException::class);
160 
162  $bag->fromJson($mixedData);
163  }
164 
166  {
167  $configCrit1 = $this->getMockBuilder(ilTermsOfServiceCriterionConfig::class)->getMock();
168 
169  $criterion1 = $this->getMockBuilder(ilTermsOfServiceEvaluableCriterion::class)->getMock();
170 
171  $criterion1
172  ->method('getCriterionId')
173  ->willReturn('crit1');
174 
175  $criterion1
176  ->method('getCriterionValue')
177  ->willReturn($configCrit1);
178 
179  $this->expectException(ilTermsOfServiceUnexpectedCriteriaBagContentException::class);
180 
182  $bag->fromJson('[{"invalid":"crit1","value":{"usr_language":"de"}},{"id":"crit2","value":{"usr_global_role":4}}]');
183  }
184 
186  {
188  $bag->fromJson('[{"id":"crit1","value":{"usr_language":"de"}},{"id":"crit2","value":{"usr_global_role":4}}]');
189 
190  $this->assertCount(count($bag), $bag);
191  $this->assertArrayHasKey(0, $bag);
192  $this->assertArrayHasKey(1, $bag);
193  $this->assertArrayHasKey('id', $bag[0]);
194  $this->assertArrayHasKey('value', $bag[0]);
195  $this->assertArrayHasKey('id', $bag[1]);
196  $this->assertArrayHasKey('value', $bag[1]);
197  $this->assertSame(
198  '[{"id":"crit1","value":{"usr_language":"de"}},{"id":"crit2","value":{"usr_global_role":4}}]',
199  $bag->toJson()
200  );
201  }
202 }
testCriteriaCanBePassedAsString(ilTermsOfServiceAcceptanceHistoryCriteriaBag $bag)
testCriteriaCanBePassedAsArray
$type
Class ilTermsOfServiceBaseTest.