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 
4 require_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 }
testSkillAssignmentsCanBetStoredAndFetchedBySerializationStrategy($value, $chunkSize, callable $preCallback, callable $postCallback)
serializedData
Class ilAssQuestionSkillAssignmentRegistryTest.
Create styles array
The data for the language used.