ILIAS  trunk Revision v11.0_alpha-2662-g519ff7d528f
ilMailMimeSubjectBuilderTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
24 {
25  private const string DEFAULT_PREFIX = 'docu default';
26 
30  public static function globalSubjectPrefixOnlyProvider(): array
31  {
32  return [
33  'Global Prefix without Brackets' => ['docu', 'docu %s'],
34  'Global Prefix with Brackets' => ['[docu]', '[docu] %s'],
35  ];
36  }
37 
41  public static function subjectPrefixesProvider(): array
42  {
43  return [
44  'Global Prefix without Brackets and Additional Context Prefix' => ['docu', 'Course', '[docu : Course] %s'],
45  'Global Prefix with Brackets and Additional Context Prefix' => ['[docu]', 'Course', '[docu : Course] %s'],
46  'Empty Global Prefix with Brackets and Additional Context Prefix' => [
47  '', // The administrator saved the global email settings form with an empty global subject prefix
48  'Course',
49  '[Course] %s',
50  ],
51  'Absent Global Prefix with Brackets and Additional Context Prefix' => [
52  null, // The administrator did not save the global email settings form, yet
53  'Course',
54  '[' . self::DEFAULT_PREFIX . ' : Course] %s',
55  ],
56  ];
57  }
58 
60  {
61  $settings = $this->getMockBuilder(ilSetting::class)->onlyMethods(['get'])->disableOriginalConstructor()->getMock();
62  $subject_builder = new ilMailMimeSubjectBuilder($settings, self::DEFAULT_PREFIX);
63 
64  $subject = 'phpunit';
65  $this->assertSame($subject, $subject_builder->subject($subject));
66  $this->assertSame($subject, $subject_builder->subject($subject, false, 'Course'));
67  }
68 
69  #[DataProvider('globalSubjectPrefixOnlyProvider')]
71  string $global_prefix,
72  string $expected_subject
73  ): void {
74  $settings = $this->getMockBuilder(ilSetting::class)->onlyMethods(['get'])->disableOriginalConstructor()->getMock();
75  $settings->expects($this->once())->method('get')->with('mail_subject_prefix')->willReturn($global_prefix);
76 
77  $subject_builder = new ilMailMimeSubjectBuilder($settings, self::DEFAULT_PREFIX);
78 
79  $subject = 'phpunit';
80  $expected_subject = sprintf($expected_subject, $subject);
81  $this->assertSame($expected_subject, $subject_builder->subject($subject, true));
82  }
83 
85  {
86  $settings = $this->getMockBuilder(ilSetting::class)->onlyMethods(['get'])->disableOriginalConstructor()->getMock();
87  $settings->expects($this->once())->method('get')->with('mail_subject_prefix')->willReturn(
88  null
89  );
90 
91  $subject_builder = new ilMailMimeSubjectBuilder($settings, self::DEFAULT_PREFIX);
92 
93  $subject = 'phpunit';
94  $expected_subject = self::DEFAULT_PREFIX . ' ' . $subject;
95  $this->assertSame($expected_subject, $subject_builder->subject($subject, true));
96  }
97 
98  #[DataProvider('subjectPrefixesProvider')]
100  ?string $global_prefix,
101  string $context_prefix,
102  string $expected_subject
103  ): void {
104  $settings = $this->getMockBuilder(ilSetting::class)->onlyMethods(['get'])->disableOriginalConstructor()->getMock();
105  $settings->expects($this->once())->method('get')->with('mail_subject_prefix')->willReturn($global_prefix);
106 
107  $subject_builder = new ilMailMimeSubjectBuilder($settings, self::DEFAULT_PREFIX);
108 
109  $subject = 'phpunit';
110  $expected_subject = sprintf($expected_subject, $subject);
111  $this->assertSame($expected_subject, $subject_builder->subject($subject, true, $context_prefix));
112  }
113 }
testGlobalPrefixMustBePrependedWhenDefinedAndPrefixShouldBeAppended(string $global_prefix, string $expected_subject)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
testContextPrefixMustBePrependedWhenGivenAndPrefixShouldBeAppended(?string $global_prefix, string $context_prefix, string $expected_subject)