ILIAS  trunk Revision v11.0_alpha-1761-g6dbbfa7b760
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilMailTemplateContextTest Class Reference
+ Inheritance diagram for ilMailTemplateContextTest:
+ Collaboration diagram for ilMailTemplateContextTest:

Public Member Functions

 getAnonymousTemplateContext (OrgUnitUserService $orgUnitUserService, ilMailEnvironmentHelper $envHelper, ilMailUserHelper $usernameHelper, ilMailLanguageHelper $languageHelper)
 
 testGlobalPlaceholdersCanBeResolvedWithCorrespondingValues (callable $user_callable, callable $ou_user_callable)
 userProvider More...
 

Static Public Member Functions

static userProvider ()
 

Private Member Functions

 generateOrgUnitUsers (Closure $mock_builder, int $amount)
 

Additional Inherited Members

- Protected Member Functions inherited from ilMailBaseTestCase
 brutallyTrimHTML (string $html)
 
 setUp ()
 
 tearDown ()
 
 setGlobalVariable (string $name, $value)
 

Detailed Description

Definition at line 26 of file ilMailTemplateContextTest.php.

Member Function Documentation

◆ generateOrgUnitUsers()

ilMailTemplateContextTest::generateOrgUnitUsers ( Closure  $mock_builder,
int  $amount 
)
private
Parameters
Closure()MockBuilder<ilOrgUnitUser> $mock_builder
Returns
array<int, ilOrgUnitUser&MockObject>
Exceptions
ReflectionException

Definition at line 71 of file ilMailTemplateContextTest.php.

Referenced by userProvider().

71  : array
72  {
73  $users = [];
74 
75  for ($i = 1; $i <= $amount; $i++) {
76  $user = $mock_builder()
77  ->disableOriginalConstructor()
78  ->onlyMethods(['getUserId',])
79  ->getMock();
80  $user->expects($this->atLeastOnce())->method('getUserId')->willReturn($i);
81 
82  $users[$i] = $user;
83  }
84 
85  return $users;
86  }
+ Here is the caller graph for this function:

◆ getAnonymousTemplateContext()

ilMailTemplateContextTest::getAnonymousTemplateContext ( OrgUnitUserService  $orgUnitUserService,
ilMailEnvironmentHelper  $envHelper,
ilMailUserHelper  $usernameHelper,
ilMailLanguageHelper  $languageHelper 
)

Definition at line 28 of file ilMailTemplateContextTest.php.

References ILIAS\Survey\Mode\getId(), ILIAS\GlobalScreen\Scope\Footer\Factory\getTitle(), and null.

Referenced by testGlobalPlaceholdersCanBeResolvedWithCorrespondingValues().

34  return new class ($orgUnitUserService, $envHelper, $usernameHelper, $languageHelper) extends
36  public function getId(): string
37  {
38  return 'phpunuit';
39  }
40 
41  public function getTitle(): string
42  {
43  return 'phpunuit';
44  }
45 
46  public function getDescription(): string
47  {
48  return 'phpunuit';
49  }
50 
51  public function getSpecificPlaceholders(): array
52  {
53  return [];
54  }
55 
56  public function resolveSpecificPlaceholder(
57  string $placeholder_id,
58  array $context_parameters,
59  ?ilObjUser $recipient = null
60  ): string {
61  return '';
62  }
63  };
64  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ testGlobalPlaceholdersCanBeResolvedWithCorrespondingValues()

ilMailTemplateContextTest::testGlobalPlaceholdersCanBeResolvedWithCorrespondingValues ( callable  $user_callable,
callable  $ou_user_callable 
)

userProvider

Parameters
callable(Closure()MockBuilder<ilObjUser>): ilObjUser $user_callable
callable(Closure()MockBuilder<ilOrgUnitUser>): array{0: ilOrgUnitUser, 1: list<ilOrgUnitUser>} $ou_user_callable
Exceptions
ReflectionException

Definition at line 165 of file ilMailTemplateContextTest.php.

References $context, $lng, $message, getAnonymousTemplateContext(), and OrgUnit\User\ilOrgUnitUser\getUserId().

168  : void {
169  $mock_builder_user_callable = function (): MockBuilder {
170  return $this->getMockBuilder(ilObjUser::class);
171  };
172  $mock_builder_ou_user_callable = function (): MockBuilder {
173  return $this->getMockBuilder(ilOrgUnitUser::class);
174  };
175 
176  $user = $user_callable->call($this, $mock_builder_user_callable);
177  [$ou_user, $ou_superiors] = $ou_user_callable->call($this, $mock_builder_ou_user_callable);
178 
179  $ou_service = $this->getMockBuilder(OrgUnitUserService::class)
180  ->disableOriginalConstructor()
181  ->onlyMethods(['getUsers',])
182  ->getMock();
183 
184  $lng = $this->getMockBuilder(ilLanguage::class)
185  ->disableOriginalConstructor()
186  ->onlyMethods(['txt', 'loadLanguageModule',])
187  ->getMock();
188 
189  $env_helper = $this->getMockBuilder(ilMailEnvironmentHelper::class)
190  ->disableOriginalConstructor()
191  ->onlyMethods(['getClientId', 'getHttpPath',])
192  ->getMock();
193 
194  $lng_helper = $this->getMockBuilder(ilMailLanguageHelper::class)
195  ->disableOriginalConstructor()
196  ->onlyMethods(['getLanguageByIsoCode', 'getCurrentLanguage',])
197  ->getMock();
198 
199  $user_helper = $this->getMockBuilder(ilMailUserHelper::class)
200  ->disableOriginalConstructor()
201  ->onlyMethods(['getUsernameMapForIds',])
202  ->getMock();
203 
204  $ou_service->expects($this->atLeastOnce())->method('getUsers')->willReturn([$ou_user,]);
205  $lng->expects($this->atLeastOnce())->method('txt')->will($this->returnArgument(0));
206  $env_helper->expects($this->atLeastOnce())->method('getClientId')->willReturn('###phpunit_client###');
207  $env_helper->expects($this->atLeastOnce())->method('getHttpPath')->willReturn('###http_ilias###');
208  $lng_helper->expects($this->atLeastOnce())->method('getLanguageByIsoCode')->willReturn($lng);
209  $lng_helper->expects($this->atLeastOnce())->method('getCurrentLanguage')->willReturn($lng);
210 
211  $expected_ids_constraint = [];
212  if ($ou_superiors !== []) {
213  $expected_ids_constraint = self::logicalAnd(
214  ...array_map(
215  static function (ilOrgUnitUser $user): \PHPUnit\Framework\Constraint\TraversableContainsEqual {
216  return self::containsEqual($user->getUserId());
217  },
218  $ou_superiors
219  )
220  );
221  }
222 
223  $first_and_last_names = array_map(static function (ilOrgUnitUser $user, int $key): string {
224  return "PhpSup$key UnitSup$key";
225  }, $ou_superiors, array_keys($ou_superiors));
226 
227  $user_helper->expects($this->atLeastOnce())->method('getUsernameMapForIds')
228  ->with($expected_ids_constraint)
229  ->willReturn($first_and_last_names);
230 
232  $ou_service,
233  $env_helper,
234  $user_helper,
235  $lng_helper
236  );
237 
238  $mustache = new Mustache_Engine();
239  $placeholder_resolver = new ilMailTemplatePlaceholderResolver($mustache);
240 
241  $message = implode('', [
242  '{{MAIL_SALUTATION}}',
243  '{{FIRST_NAME}}',
244  '{{LAST_NAME}}',
245  '{{LOGIN}}',
246  '{{TITLE}}',
247  '{{FIRSTNAME_LASTNAME_SUPERIOR}}',
248  '{{ILIAS_URL}}',
249  '{{INSTALLATION_NAME}}',
250  ]);
251  $replace_message = $placeholder_resolver->resolve($context, $message, $user);
252 
253  $this->assertStringContainsString('###Dr. Ing###', $replace_message);
254  $this->assertStringContainsString('###phpunit###', $replace_message);
255  $this->assertStringContainsString('###Unit###', $replace_message);
256  $this->assertStringContainsString('###PHP###', $replace_message);
257  $this->assertStringContainsString('###phpunit_client###', $replace_message);
258  $this->assertStringContainsString('###http_ilias###', $replace_message);
259  $this->assertStringContainsString('mail_salutation_' . $user->getGender(), $replace_message);
260 
261  foreach ($first_and_last_names as $firstAndLastname) {
262  $this->assertStringContainsString($firstAndLastname, $replace_message);
263  }
264  }
$context
Definition: webdav.php:31
Class ilMailTemplatePlaceholderResolver.
global $lng
Definition: privfeed.php:31
$message
Definition: xapiexit.php:31
getAnonymousTemplateContext(OrgUnitUserService $orgUnitUserService, ilMailEnvironmentHelper $envHelper, ilMailUserHelper $usernameHelper, ilMailLanguageHelper $languageHelper)
+ Here is the call graph for this function:

◆ userProvider()

static ilMailTemplateContextTest::userProvider ( )
static
Returns
array<string, array{0: callable, 1: callable}>
Exceptions
ReflectionException
Parameters
Closure()MockBuilder<ilObjUser> $mock_builder $mock_builder
Closure()MockBuilder<ilOrgUnitUser> $mock_builder
Returns
array{0: ilOrgUnitUser&MockObject, 1: list<ilOrgUnitUser&MockObject>}
Exceptions
ReflectionException

Definition at line 92 of file ilMailTemplateContextTest.php.

References generateOrgUnitUsers().

92  : array
93  {
94  $test_users = [];
95 
96  foreach (
97  [
98  ['gender' => 'm', 'num_superiors' => 2,],
99  ['gender' => 'n', 'num_superiors' => 1,],
100  ['gender' => 'f', 'num_superiors' => 0,],
101  ['gender' => '', 'num_superiors' => 3,],
102  ] as $definition
103  ) {
107  $user_callable = function (Closure $mock_builder) use ($definition): ilObjUser&MockObject {
108  $user = $mock_builder()
109  ->disableOriginalConstructor()
110  ->onlyMethods([
111  'getLanguage',
112  'getUTitle',
113  'getLogin',
114  'getLastname',
115  'getFirstname',
116  'getGender',
117  'getId',
118  ])
119  ->getMock();
120 
121  $user->expects($this->atLeastOnce())->method('getLanguage')->willReturn('de');
122  $user->expects($this->atLeastOnce())->method('getUTitle')->willReturn('###Dr. Ing###');
123  $user->expects($this->atLeastOnce())->method('getLogin')->willReturn('###phpunit###');
124  $user->expects($this->atLeastOnce())->method('getLastname')->willReturn('###Unit###');
125  $user->expects($this->atLeastOnce())->method('getFirstname')->willReturn('###PHP###');
126  $user->expects($this->atLeastOnce())->method('getGender')->willReturn($definition['gender']);
127  $user->expects($this->atLeastOnce())->method('getId')->willReturn(4711);
128 
129  return $user;
130  };
131 
137  $ou_user_callable = function (Closure $mock_builder) use ($definition): array {
138  $ou_user = $mock_builder()
139  ->disableOriginalConstructor()
140  ->onlyMethods(['getSuperiors',])
141  ->getMock();
142 
143  $superiors = $this->generateOrgUnitUsers($mock_builder, $definition['num_superiors']);
144  $ou_user->expects($this->atLeastOnce())->method('getSuperiors')->willReturn($superiors);
145 
146  return [$ou_user, $superiors];
147  };
148 
149  $test_users[sprintf(
150  'User with gender "%s" and %s superiors',
151  $definition['gender'],
152  $definition['num_superiors']
153  )] = [$user_callable, $ou_user_callable];
154  }
155 
156  return $test_users;
157  }
generateOrgUnitUsers(Closure $mock_builder, int $amount)
+ Here is the call graph for this function:

The documentation for this class was generated from the following file: