ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
TaskTestTBD.php
Go to the documentation of this file.
1<?php
2
19use PHPUnit\Framework\Attributes\BackupGlobals;
20use PHPUnit\Framework\Attributes\BackupStaticProperties;
21use PHPUnit\Framework\Attributes\PreserveGlobalState;
22use PHPUnit\Framework\Attributes\RunTestsInSeparateProcesses;
26use ILIAS\BackgroundTasks\Implementation\Bucket\BucketMock;
39use PHPUnit\Framework\TestCase;
40
41require_once("vendor/composer/vendor/autoload.php");
42
49#[BackupGlobals(false)]
50#[BackupStaticProperties(false)]
51#[PreserveGlobalState(false)]
52#[RunTestsInSeparateProcesses]
53class TaskTest extends TestCase
54{
55 public function testPlusTask(): void
56 {
57 $dic = new Container();
58
59 $factory = new Injector($dic, new BaseDependencyMap());
60
61 $a = new IntegerValue();
62 $a->setValue(1);
63 $b = new IntegerValue();
64 $b->setValue(2);
65 $c = new IntegerValue();
66 $c->setValue(3);
67
69 $t1 = $factory->createInstance(PlusJob::class);
70 $t1->setInput([$a, $b]);
71
73 $t2 = $factory->createInstance(PlusJob::class);
74 $t2->setInput([$t1, $c]);
75
76 $this->assertTrue($t2->getOutputType()->equals(new SingleType(IntegerValue::class)));
77
78 $taskManager = new SyncTaskManager(Mockery::mock(Persistence::class));
80 $finalValue = $taskManager->executeTask($t2, new MockObserver());
81 $this->assertEquals(6, $finalValue->getValue());
82 }
83
84 public function testValueWrapper(): void
85 {
86 $dic = new Container();
87 $dic[Bucket::class] = (fn($c): BucketMock => new BucketMock());
88 $factory = new Injector($dic, new BaseDependencyMap());
89
90 $t = $factory->createInstance(PlusJob::class);
91 $t->setInput([1, 4]);
92
93 $taskManager = new SyncTaskManager(Mockery::mock(Persistence::class));
95 $finalValue = $taskManager->executeTask($t, new MockObserver());
96 $this->assertEquals(5, $finalValue->getValue());
97 }
98
99 public function testTypeCheck(): void
100 {
101 $this->expectException(InvalidArgumentException::class);
102
103 $dic = new Container();
104 $dic[Bucket::class] = (fn($c): BucketMock => new BucketMock());
105 $factory = new Injector($dic, new BaseDependencyMap());
106
107 $a = new IntegerValue(1);
108 $b = new StringValue("hello");
109
111 $t1 = $factory->createInstance(PlusJob::class);
112 $t1->setInput([$a, $b]);
113 }
114
115 public function testAggregation(): void
116 {
117 $dic = new Container();
118 $factory = new Injector($dic, new BaseDependencyMap());
119
120 $list = new ListValue();
121 $list->setValue([1, "hello", 3.0]);
122
124 $t1 = $factory->createInstance(ConcatenationJob::class);
125 $t1->setInput([$list]);
126
127 $output = $t1->run([$list], new MockObserver());
128 $this->assertEquals("1, hello, 3", $output->getValue());
129 }
130
131 public function testUnfoldTask(): void
132 {
133 $dic = new Container();
134 $dic[Bucket::class] = (fn($c): BasicBucket => new BasicBucket());
135
136 $factory = new Injector($dic, new BaseDependencyMap());
137
141 $t0 = $factory->createInstance(PlusJob::class);
142 $t0->setInput([1, 1]);
143
145 $t1 = $factory->createInstance(PlusJob::class);
146 $t1->setInput([$t0, 2]);
147
149 $t25 = $factory->createInstance(PlusJob::class);
150 $t25->setInput([2, 2]);
151
153 $t2 = $factory->createInstance(PlusJob::class);
154 $t2->setInput([$t1, $t25]);
155
156 $this->assertTrue($t2->getOutputType()->equals(new SingleType(IntegerValue::class)));
157
158 $list = $t2->unfoldTask();
159 $this->assertEquals($list, [$t2, $t1, $t0, $t25]);
160
162 $taskManager = new SyncTaskManager(Mockery::mock(Persistence::class));
164 $finalValue = $taskManager->executeTask($t2, new MockObserver());
165 $this->assertEquals(8, $finalValue->getValue());
166 }
167}
Class Exception Thrown if some procedure did not get the arguments it expected.
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
Class BackgroundTaskTest.
Definition: TaskTestTBD.php:54
$c
Definition: deliver.php:25
$dic
Definition: ltiresult.php:33
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples