ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 unset($this->storage[$key]);
56 }
57 })
58 );
59
60 $valueToTest = $preCallback($value);
61
62 $registry = new \ilAssQuestionSkillAssignmentRegistry($settingsMock);
63 $registry->setChunkSize($chunkSize);
64 $registry->setStringifiedImports(self::TEST_KEY, $valueToTest);
65 $actual = $registry->getStringifiedImports(self::TEST_KEY);
66
67 $this->assertEquals($valueToTest, $actual);
68 $this->assertEquals($value, $postCallback($actual));
69 }
70
75 {
76 require_once 'Services/Administration/classes/class.ilSetting.php';
77 $settingsMock = $this->getMockBuilder('ilSetting')->disableOriginalConstructor()->setMethods(array('set', 'get', 'delete'))->getMock();
78
79 try {
80 $registry = new \ilAssQuestionSkillAssignmentRegistry($settingsMock);
81 $registry->setChunkSize("a");
82 $this->fail("Failed asserting that exception of type \"InvalidArgumentException\" is thrown.");
83 } catch (\InvalidArgumentException $e) {
84 }
85
86 try {
87 $registry = new \ilAssQuestionSkillAssignmentRegistry($settingsMock);
88 $registry->setChunkSize(-5);
89 $this->fail("Failed asserting that exception of type \"InvalidArgumentException\" is thrown.");
90 } catch (\InvalidArgumentException $e) {
91 }
92 }
93
99 protected function getTestData(callable $pre, callable $post)
100 {
101 $data = [];
102
103 require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImportList.php';
104 require_once 'Modules/TestQuestionPool/classes/questions/class.ilAssQuestionSkillAssignmentImport.php';
105 require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionSkillAssignment.php';
106 $assignmentList = new \ilAssQuestionSkillAssignmentImportList();
107
108 for ($i = 0; $i < 5; $i++) {
109 $assignment = new \ilAssQuestionSkillAssignmentImport();
111 $assignment->setImportSkillTitle('phpunit' . $i);
112 $assignment->setImportSkillPath('phpunit' . $i);
113 $random = new \ilRandom();
114 $assignment->setSkillPoints($random->int(0, PHP_INT_MAX));
115 $assignment->setImportQuestionId($random->int(0, PHP_INT_MAX));
116 $assignment->setImportSkillBaseId($random->int(0, PHP_INT_MAX));
117 $assignment->setImportSkillTrefId($random->int(0, PHP_INT_MAX));
118
119 $assignmentList->addAssignment($assignment);
120 }
121
122 $rawData = array(
123 array("This is a Test", 2),
124 array(array("üäöÖÜÄÖß"), 2),
125 array("This is a Test with a huge chunk size", 10000),
126 array($assignmentList, 7)
127 );
128
129 foreach ($rawData as $rawItem) {
130 $data[] = array(
131 $rawItem[0], $rawItem[1], $pre, $post
132 );
133 }
134
135 return $data;
136 }
137
141 public function serializedData()
142 {
143 $pre = function ($value) {
144 return \serialize($value);
145 };
146
147 $post = function ($value) {
148 return \unserialize($value);
149 };
150
151 return $this->getTestData($pre, $post);
152 }
153}
An exception for terminatinating execution or to throw for unit testing.
Class ilAssQuestionSkillAssignmentRegistryTest.
testSkillAssignmentsCanBetStoredAndFetchedBySerializationStrategy($value, $chunkSize, callable $preCallback, callable $postCallback)
@dataProvider serializedData
$key
Definition: croninfo.php:18
$i
Definition: disco.tpl.php:19
$post
Definition: post.php:34