ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ilAssQuestionSkillAssignmentRegistryTest.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentRegistry.php';
5
10{
11 const TEST_KEY = 'phpunit_tst';
12
16 protected $storage = array();
17
21 public function setUp()
22 {
23 parent::setUp();
24
25 $this->storage = array();
26 }
27
35 public function testSkillAssignmentsCanBetStoredAndFetchedBySerializationStrategy($value, $chunkSize, callable $preCallback, callable $postCallback)
36 {
37 require_once 'Services/Administration/classes/class.ilSetting.php';
38 $settingsMock = $this->getMockBuilder('ilSetting')->disableOriginalConstructor()->setMethods(array('set', 'get', 'delete'))->getMock();
39
40 $settingsMock->expects($this->any())->method('set')->will(
41 $this->returnCallback(function($key, $value) {
42 $this->storage[$key] = $value;
43 })
44 );
45
46 $settingsMock->expects($this->any())->method('get')->will(
47 $this->returnCallback(function($key, $value) {
48 return isset($this->storage[$key]) ? $this->storage[$key] : $value;
49 })
50 );
51
52 $settingsMock->expects($this->any())->method('delete')->will(
53 $this->returnCallback(function($key, $value) {
54 if(isset($this->storage[$key]))
55 {
56 unset($this->storage[$key]);
57 }
58 })
59 );
60
61 $valueToTest = $preCallback($value);
62
63 $registry = new \ilAssQuestionSkillAssignmentRegistry($settingsMock);
64 $registry->setChunkSize($chunkSize);
65 $registry->setStringifiedImports(self::TEST_KEY, $valueToTest);
66 $actual = $registry->getStringifiedImports(self::TEST_KEY);
67
68 $this->assertEquals($valueToTest, $actual);
69 $this->assertEquals($value, $postCallback($actual));
70 }
71
76 {
77 require_once 'Services/Administration/classes/class.ilSetting.php';
78 $settingsMock = $this->getMockBuilder('ilSetting')->disableOriginalConstructor()->setMethods(array('set', 'get', 'delete'))->getMock();
79
80 try
81 {
82 $registry = new \ilAssQuestionSkillAssignmentRegistry($settingsMock);
83 $registry->setChunkSize("a");
84 $this->fail("Failed asserting that exception of type \"InvalidArgumentException\" is thrown.");
85 }
86 catch(\InvalidArgumentException $e)
87 {
88 }
89
90 try
91 {
92 $registry = new \ilAssQuestionSkillAssignmentRegistry($settingsMock);
93 $registry->setChunkSize(-5);
94 $this->fail("Failed asserting that exception of type \"InvalidArgumentException\" is thrown.");
95 }
96 catch(\InvalidArgumentException $e)
97 {
98 }
99 }
100
106 protected function getTestData(callable $pre, callable $post)
107 {
108 $data = [];
109
110 require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImportList.php';
111 require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImport.php';
112 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignment.php';
113 $assignmentList = new \ilAssQuestionSkillAssignmentImportList();
114
115 for($i = 0; $i < 5; $i++)
116 {
117 $assignment = new \ilAssQuestionSkillAssignmentImport();
119 $assignment->setImportSkillTitle('phpunit' . $i);
120 $assignment->setImportSkillPath('phpunit' . $i);
121 $assignment->setSkillPoints(\rand(0, PHP_INT_MAX));
122 $assignment->setImportQuestionId(\rand(0, PHP_INT_MAX));
123 $assignment->setImportSkillBaseId(\rand(0, PHP_INT_MAX));
124 $assignment->setImportSkillTrefId(\rand(0, PHP_INT_MAX));
125
126 $assignmentList->addAssignment($assignment);
127 }
128
129 $rawData = array(
130 array("This is a Test", 2),
131 array(array("üäöÖÜÄÖß"), 2),
132 array("This is a Test with a huge chunk size", 10000),
133 array($assignmentList, 7)
134 );
135
136 foreach($rawData as $rawItem)
137 {
138 $data[] = array(
139 $rawItem[0], $rawItem[1], $pre, $post
140 );
141 }
142
143 return $data;
144 }
145
149 public function serializedData()
150 {
151 $pre = function($value) {
152 return \serialize($value);
153 };
154
155 $post = function($value) {
156 return \unserialize($value);
157 };
158
159 return $this->getTestData($pre, $post);
160 }
161}
An exception for terminatinating execution or to throw for unit testing.
Class ilAssQuestionSkillAssignmentRegistryTest.
testSkillAssignmentsCanBetStoredAndFetchedBySerializationStrategy($value, $chunkSize, callable $preCallback, callable $postCallback)
@dataProvider serializedData