19declare(strict_types=1);
22use PHPUnit\Framework\MockObject\MockObject;
23use PHPUnit\Framework\Attributes\DataProvider;
31 protected function setUp(): void
35 $this->
database = $this->getMockBuilder(ilDBInterface::class)
37 $query_mock = $this->getMockBuilder(ilDBStatement::class)
40 $this->
object =
new stdClass();
41 $this->
object->cronjob_notification =
false;
42 $this->
object->signature =
'smth';
43 $this->
object->incoming_type = 1;
44 $this->
object->mail_address_option = 0;
45 $this->
object->email =
'test@test.com';
46 $this->
object->second_email =
'ilias@ilias.com';
47 $this->
object->absence_status =
false;
48 $this->
object->absent_from = time();
49 $this->
object->absent_until = time();
50 $this->
object->absence_ar_subject =
'subject';
51 $this->
object->absence_ar_body =
'body';
54 $this->
database->expects($this->once())->method(
'queryF')->willReturn($query_mock);
55 $this->
database->expects($this->once())->method(
'fetchObject')->willReturn($this->
object);
56 $this->
database->method(
'replace')->willReturn(0);
61 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
'get'])->getMock();
62 $settings->method(
'get')->willReturnCallback(
static function (
string $key, ?
string $default =
null) {
63 if ($key ===
'mail_incoming_mail' || $key ===
'mail_address_option') {
67 if ($key ===
'show_mail_settings') {
74 $user_settings = $this->getMockBuilder(
ILIAS\User\Settings\Settings::class)->disableOriginalConstructor()
80 $this->createMock(ClockInterface::class),
88 $this->assertSame(
'', $mail_options->getSignature());
90 $this->assertFalse($mail_options->isCronJobNotificationEnabled());
95 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
'get'])->getMock();
96 $settings->method(
'get')->willReturnCallback(
static function (
string $key, ?
string $default =
null) {
97 if ($key ===
'mail_incoming_mail' || $key ===
'mail_address_option') {
101 if ($key ===
'show_mail_settings') {
108 $user_settings = $this->getMockBuilder(
ILIAS\User\Settings\Settings::class)->disableOriginalConstructor()
110 $user_settings->method(
'settingAvailableToUser')->willReturn(
true);
115 $this->createMock(ClockInterface::class),
121 $this->assertSame($this->
object->signature, $mail_options->getSignature());
122 $this->assertSame($this->
object->incoming_type, $mail_options->getIncomingType());
123 $this->assertSame($this->
object->cronjob_notification, $mail_options->isCronJobNotificationEnabled());
124 $this->assertSame($this->
object->absence_status, $mail_options->getAbsenceStatus());
125 $this->assertSame($this->
object->absent_from, $mail_options->getAbsentFrom());
126 $this->assertSame($this->
object->absent_until, $mail_options->getAbsentUntil());
127 $this->assertSame($this->
object->absence_ar_subject, $mail_options->getAbsenceAutoresponderSubject());
128 $this->assertSame($this->
object->absence_ar_body, $mail_options->getAbsenceAutoresponderBody());
131 #[DataProvider('provideMailOptionsData')]
132 public function testIsAbsent(
bool $absence_status,
int $absent_from,
int $absent_until,
bool $result): void
135 $this->
object->absence_status = $absence_status;
136 $this->
object->absent_from = $absent_from;
137 $this->
object->absent_until = $absent_until;
138 $this->
object->absence_ar_subject =
'subject';
139 $this->
object->absence_ar_body =
'body';
141 $cloc_service = $this->createMock(ClockInterface::class);
142 $cloc_service->method(
'now')->willReturn((
new DateTimeImmutable())->setTimestamp(100));
144 $settings = $this->getMockBuilder(ilSetting::class)->disableOriginalConstructor()->onlyMethods([
'get'])->getMock();
145 $settings->method(
'get')->willReturnCallback(
static function (
string $key, ?
string $default =
null) {
146 if ($key ===
'mail_incoming_mail' || $key ===
'mail_address_option') {
150 if ($key ===
'show_mail_settings') {
154 if ($key ===
'usr_settings_disable_mail_incoming_mail') {
161 $user_settings = $this->getMockBuilder(
ILIAS\User\Settings\Settings::class)->disableOriginalConstructor()
173 $this->assertEquals($result, $mail_options->isAbsent());
178 yield
'correct configuration' => [
179 'absence_status' =>
true,
180 'absent_from' => 100,
181 'absent_until' => 100,
185 yield
'not absent' => [
186 'absence_status' =>
false,
187 'absent_from' => 100,
188 'absent_until' => 100,
192 yield
'absent, absent_from is in the future' => [
193 'absence_status' =>
true,
194 'absent_from' => 100 + 1,
195 'absent_until' => 100,
199 yield
'absent, absent_until is in the past' => [
200 'absence_status' =>
true,
201 'absent_from' => 100,
202 'absent_until' => 100 - 1,
206 yield
'absent, absent_from is in the past, absent_until is in the future' => [
207 'absence_status' =>
true,
208 'absent_from' => 100 - 1,
209 'absent_until' => 100 + 1,
MockObject &ilSetting $settings
MockObject &ilDBInterface $database
testConstructorWithUserSettings()
static provideMailOptionsData()
testIsAbsent(bool $absence_status, int $absent_from, int $absent_until, bool $result)
final const int INCOMING_LOCAL
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.