ILIAS  release_8 Revision v8.24
CronJobManagerTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21use PHPUnit\Framework\TestCase;
22
23class CronJobManagerTest extends TestCase
24{
25 private function createClockFactoryMock(): \ILIAS\Data\Clock\ClockFactory
26 {
27 $clock_factory = $this->createMock(ILIAS\Data\Clock\ClockFactory::class);
28 $now = new DateTimeImmutable('@' . time());
29 $clock_factory->method('system')->willReturn(
30 new class ($now) implements \ILIAS\Data\Clock\ClockInterface {
31 private DateTimeImmutable $now;
32
33 public function __construct(DateTimeImmutable $now)
34 {
35 $this->now = $now;
36 }
37
38 public function now(): DateTimeImmutable
39 {
40 return $this->now;
41 }
42 }
43 );
44
45 return $clock_factory;
46 }
47
49 {
50 $db = $this->createMock(ilDBInterface::class);
51 $setting = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->getMock();
52 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
53 $repository = $this->createMock(ilCronJobRepository::class);
54 $job = $this->createMock(ilCronJob::class);
55 $user = $this->getMockBuilder(ilObjUser::class)
56 ->disableOriginalConstructor()
57 ->onlyMethods(['getId'])
58 ->getMock();
59
60 $clock_factory = $this->createClockFactoryMock();
61
62 $cronManager = new ilCronManagerImpl(
63 $repository,
64 $db,
65 $setting,
66 $logger,
67 $clock_factory
68 );
69
70 $repository->expects($this->once())->method('updateJobResult')->with(
71 $job,
72 $clock_factory->system()->now(),
73 $user,
74 $this->isInstanceOf(ilCronJobResult::class),
75 true
76 );
77
78 $repository->expects($this->once())->method('resetJob')->with(
79 $job
80 );
81
82 $repository->expects($this->once())->method('activateJob')->with(
83 $job,
84 $clock_factory->system()->now(),
85 $user,
86 true
87 );
88
89 $job->expects($this->once())->method('activationWasToggled')->with(
90 $db,
91 $setting,
92 true
93 );
94
95 $cronManager->resetJob($job, $user);
96 }
97
99 {
100 $db = $this->createMock(ilDBInterface::class);
101 $setting = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->getMock();
102 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
103 $repository = $this->createMock(ilCronJobRepository::class);
104 $job = $this->createMock(ilCronJob::class);
105 $user = $this->getMockBuilder(ilObjUser::class)
106 ->disableOriginalConstructor()
107 ->onlyMethods(['getId'])
108 ->getMock();
109
110 $clock_factory = $this->createClockFactoryMock();
111
112 $cronManager = new ilCronManagerImpl(
113 $repository,
114 $db,
115 $setting,
116 $logger,
117 $clock_factory
118 );
119
120 $repository->expects($this->exactly(2))->method('activateJob')->withConsecutive(
121 [$job, $clock_factory->system()->now(), $user, true],
122 [$job, $clock_factory->system()->now(), $user, false]
123 );
124
125 $job->expects($this->exactly(2))->method('activationWasToggled')->with(
126 $db,
127 $setting,
128 true
129 );
130
131 $cronManager->activateJob($job, $user, true);
132 $cronManager->activateJob($job, $user, false);
133 }
134
136 {
137 $db = $this->createMock(ilDBInterface::class);
138 $setting = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->getMock();
139 $logger = $this->getMockBuilder(ilLogger::class)->disableOriginalConstructor()->getMock();
140 $repository = $this->createMock(ilCronJobRepository::class);
141 $job = $this->createMock(ilCronJob::class);
142 $user = $this->getMockBuilder(ilObjUser::class)
143 ->disableOriginalConstructor()
144 ->onlyMethods(['getId'])
145 ->getMock();
146
147 $clock_factory = $this->createClockFactoryMock();
148
149 $cronManager = new ilCronManagerImpl(
150 $repository,
151 $db,
152 $setting,
153 $logger,
154 $clock_factory
155 );
156
157 $repository->expects($this->exactly(2))->method('deactivateJob')->withConsecutive(
158 [$job, $clock_factory->system()->now(), $user, true],
159 [$job, $clock_factory->system()->now(), $user, false]
160 );
161
162 $job->expects($this->exactly(2))->method('activationWasToggled')->with(
163 $db,
164 $setting,
165 false
166 );
167
168 $cronManager->deactivateJob($job, $user, true);
169 $cronManager->deactivateJob($job, $user, false);
170 }
171}
testCronManagerNotifiesJobWhenJobGetsDeactivated()
testCronManagerNotifiesJobWhenJobGetsActivated()
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Class ChatMainBarProvider \MainMenu\Provider.