ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
CronJobManagerTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
23 class 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 }
Class ChatMainBarProvider .
testCronManagerNotifiesJobWhenJobGetsActivated()
__construct(Container $dic, ilPlugin $plugin)
testCronManagerNotifiesJobWhenJobGetsDeactivated()