ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
All Data Structures Namespaces Files Functions Variables Modules Pages
ilMailTemplateContextTest.php
Go to the documentation of this file.
1 <?php declare(strict_types=1);
2 
3 /* Copyright (c) 1998-2019 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
7 
13 {
21  public function getAnonymousTemplateContext(
22  OrgUnitUserService $orgUnitUserService,
23  ilMailEnvironmentHelper $envHelper,
24  ilMailUserHelper $usernameHelper,
25  ilMailLanguageHelper $languageHelper
27  return new class($orgUnitUserService, $envHelper, $usernameHelper, $languageHelper) extends ilMailTemplateContext {
28  public function getId() : string
29  {
30  return 'phpunuit';
31  }
32 
33  public function getTitle() : string
34  {
35  return 'phpunuit';
36  }
37 
38  public function getDescription() : string
39  {
40  return 'phpunuit';
41  }
42 
43  public function getSpecificPlaceholders() : array
44  {
45  return [];
46  }
47 
48  public function resolveSpecificPlaceholder(
49  string $placeholder_id,
50  array $context_parameters,
51  ilObjUser $recipient = null,
52  bool $html_markup = false
53  ) : string {
54  return '';
55  }
56  };
57  }
58 
64  private function generateOrgUnitUsers(int $amount) : array
65  {
66  $users = [];
67 
68  for ($i = 1; $i <= $amount; $i++) {
69  $user = $this->getMockBuilder(ilOrgUnitUser::class)
70  ->disableOriginalConstructor()
71  ->setMethods(['getUserId',])
72  ->getMock();
73  $user->expects($this->atLeastOnce())->method('getUserId')->willReturn($i);
74 
75  $users[$i] = $user;
76  }
77 
78  return $users;
79  }
80 
85  public function userProvider() : array
86  {
87  $testUsers = [];
88 
89  foreach ([
90  ['gender' => 'm', 'num_superiors' => 2,],
91  ['gender' => 'n', 'num_superiors' => 1,],
92  ['gender' => 'f', 'num_superiors' => 0,],
93  ['gender' => '', 'num_superiors' => 3,]
94  ] as $definition) {
95  $user = $this->getMockBuilder(ilObjUser::class)
96  ->disableOriginalConstructor()
97  ->setMethods([
98  'getLanguage',
99  'getUTitle',
100  'getLogin',
101  'getLastname',
102  'getFirstname',
103  'getGender',
104  'getId',
105  ])
106  ->getMock();
107 
108  $user->expects($this->atLeastOnce())->method('getLanguage')->willReturn('de');
109  $user->expects($this->atLeastOnce())->method('getUTitle')->willReturn('###Dr. Ing###');
110  $user->expects($this->atLeastOnce())->method('getLogin')->willReturn('###phpunit###');
111  $user->expects($this->atLeastOnce())->method('getLastname')->willReturn('###Unit###');
112  $user->expects($this->atLeastOnce())->method('getFirstname')->willReturn('###PHP###');
113  $user->expects($this->atLeastOnce())->method('getGender')->willReturn($definition['gender']);
114  $user->expects($this->atLeastOnce())->method('getId')->willReturn(4711);
115 
116  $ouUser = $this->getMockBuilder(ilOrgUnitUser::class)
117  ->disableOriginalConstructor()
118  ->setMethods(['getSuperiors',])
119  ->getMock();
120 
121  $superiors = $this->generateOrgUnitUsers($definition['num_superiors']);
122  $ouUser->expects($this->atLeastOnce())->method('getSuperiors')->willReturn($superiors);
123 
124  $testUsers[sprintf(
125  'User with gender "%s" and %s superiors',
126  $definition['gender'],
127  $definition['num_superiors']
128  )] = [$user, $ouUser, $superiors,];
129  }
130 
131  return $testUsers;
132  }
133 
142  ilObjUser $user,
143  ilOrgUnitUser $ouUser,
144  array $superiors
145  ) : void {
146  $ouService = $this->getMockBuilder(OrgUnitUserService::class)
147  ->disableOriginalConstructor()
148  ->setMethods(['getUsers',])
149  ->getMock();
150 
151  $lng = $this->getMockBuilder(ilLanguage::class)
152  ->disableOriginalConstructor()
153  ->setMethods(['txt', 'loadLanguageModule',])
154  ->getMock();
155 
156  $envHelper = $this->getMockBuilder(ilMailEnvironmentHelper::class)
157  ->disableOriginalConstructor()
158  ->setMethods(['getClientId', 'getHttpPath',])
159  ->getMock();
160 
161  $lngHelper = $this->getMockBuilder(ilMailLanguageHelper::class)
162  ->disableOriginalConstructor()
163  ->setMethods(['getLanguageByIsoCode', 'getCurrentLanguage',])
164  ->getMock();
165 
166  $userHelper = $this->getMockBuilder(ilMailUserHelper::class)
167  ->disableOriginalConstructor()
168  ->setMethods(['getUsernameMapForIds',])
169  ->getMock();
170 
171  $ouService->expects($this->atLeastOnce())->method('getUsers')->willReturn([$ouUser,]);
172  $lng->expects($this->atLeastOnce())->method('txt')->will($this->returnArgument(0));
173  $envHelper->expects($this->atLeastOnce())->method('getClientId')->willReturn('###phpunit_client###');
174  $envHelper->expects($this->atLeastOnce())->method('getHttpPath')->willReturn('###http_ilias###');
175  $lngHelper->expects($this->atLeastOnce())->method('getLanguageByIsoCode')->willReturn($lng);
176  $lngHelper->expects($this->atLeastOnce())->method('getCurrentLanguage')->willReturn($lng);
177 
178  $expectedIdsConstraint = $this->logicalAnd(...array_map(function (ilOrgUnitUser $user) {
179  return $this->contains($user->getUserId());
180  }, $superiors));
181 
182  $firstAndLastnames = array_map(function (ilOrgUnitUser $user, int $key) {
183  return "PhpSup{$key} UnitSup{$key}";
184  }, $superiors, array_keys($superiors));
185 
186  $userHelper->expects($this->atLeastOnce())->method('getUsernameMapForIds')
187  ->with($expectedIdsConstraint)
188  ->willReturn($firstAndLastnames);
189 
191  $ouService,
192  $envHelper,
193  $userHelper,
194  $lngHelper
195  );
196 
197  $placeholderResolver = new ilMailTemplatePlaceholderResolver($context, implode('', [
198  '[MAIL_SALUTATION]',
199  '[FIRST_NAME]',
200  '[LAST_NAME]',
201  '[LOGIN]',
202  '[TITLE]',
203  '[FIRSTNAME_LASTNAME_SUPERIOR]',
204  '[ILIAS_URL]',
205  '[CLIENT_NAME]',
206  ]));
207 
208  $replaceMessage = $placeholderResolver->resolve($user);
209 
210  $this->assertStringContainsString('###Dr. Ing###', $replaceMessage);
211  $this->assertStringContainsString('###phpunit###', $replaceMessage);
212  $this->assertStringContainsString('###Unit###', $replaceMessage);
213  $this->assertStringContainsString('###PHP###', $replaceMessage);
214  $this->assertStringContainsString('###phpunit_client###', $replaceMessage);
215  $this->assertStringContainsString('###http_ilias###', $replaceMessage);
216  $this->assertStringContainsString('mail_salutation_' . $user->getGender(), $replaceMessage);
217 
218  foreach ($firstAndLastnames as $firstAndLastname) {
219  $this->assertStringContainsString($firstAndLastname, $replaceMessage);
220  }
221  }
222 }
$context
Definition: webdav.php:26
testGlobalPlaceholdersCanBeResolvedWithCorrespondingValues(ilObjUser $user, ilOrgUnitUser $ouUser, array $superiors)
userProvider
Class ilMailEnvironmentHelper.
Class ilMailUserHelper.
Class ilMailBaseTest.
$lng
Class ilMailLanguageHelper.
Class ilMailTemplateContext.
Class ilMailTemplatePlaceholderResolver.
Class ilMailTemplateContextTest.
$i
Definition: metadata.php:24
getAnonymousTemplateContext(OrgUnitUserService $orgUnitUserService, ilMailEnvironmentHelper $envHelper, ilMailUserHelper $usernameHelper, ilMailLanguageHelper $languageHelper)