Skip to content

Commit 076f312

Browse files
committed
Making the gravatar switch optional in edit-user endpoint.
1 parent a2cca24 commit 076f312

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

app/V1Module/presenters/UsersPresenter.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ public function checkUpdateProfile(string $id)
225225
* description="New password of current user")
226226
* @Param(type="post", name="passwordConfirm", required=false, validation="string:1..",
227227
* description="Confirmation of new password of current user")
228-
* @Param(type="post", name="gravatarUrlEnabled", validation="bool",
228+
* @Param(type="post", name="gravatarUrlEnabled", validation="bool", required=false,
229229
* description="Enable or disable gravatar profile image")
230230
* @throws WrongCredentialsException
231231
* @throws NotFoundException
@@ -254,7 +254,10 @@ public function actionUpdateProfile(string $id)
254254
$req->getPost("passwordConfirm")
255255
);
256256

257-
$user->setGravatar(filter_var($req->getPost("gravatarUrlEnabled"), FILTER_VALIDATE_BOOLEAN));
257+
$gravatarUrlEnabled = $req->getPost("gravatarUrlEnabled");
258+
if ($gravatarUrlEnabled !== null) { // null or missing value -> no update
259+
$user->setGravatar(filter_var($gravatarUrlEnabled, FILTER_VALIDATE_BOOLEAN));
260+
}
258261

259262
// make changes permanent
260263
$this->users->flush();

tests/Presenters/UsersPresenter.phpt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ class TestUsersPresenter extends Tester\TestCase
244244
'lastName' => $lastName,
245245
'titlesBeforeName' => $titlesBeforeName,
246246
'titlesAfterName' => $titlesAfterName,
247-
'gravatarUrlEnabled' => false
248247
]
249248
);
250249
$response = $this->presenter->run($request);
@@ -276,6 +275,9 @@ class TestUsersPresenter extends Tester\TestCase
276275
$emailVerificationHelper->shouldReceive("process")->with($user)->andReturn()->once();
277276
$this->presenter->emailVerificationHelper = $emailVerificationHelper;
278277

278+
$user->setGravatar(true);
279+
$this->presenter->users->persist($user);
280+
279281
$request = new Nette\Application\Request(
280282
$this->presenterPath,
281283
'POST',
@@ -286,7 +288,7 @@ class TestUsersPresenter extends Tester\TestCase
286288
'titlesBeforeName' => $titlesBeforeName,
287289
'titlesAfterName' => $titlesAfterName,
288290
'email' => $email,
289-
'gravatarUrlEnabled' => false
291+
'gravatarUrlEnabled' => false // make sure gravatar gets reset
290292
]
291293
);
292294
$response = $this->presenter->run($request);
@@ -313,6 +315,9 @@ class TestUsersPresenter extends Tester\TestCase
313315
$user = $this->users->getByEmail(PresenterTestHelper::ADMIN_LOGIN);
314316
$login = $this->presenter->logins->findByUsernameOrThrow($user->getEmail());
315317

318+
$user->setGravatar(true);
319+
$this->presenter->users->persist($user);
320+
316321
$firstName = "firstNameUpdated";
317322
$lastName = "lastNameUpdated";
318323
$titlesBeforeName = "titlesBeforeNameUpdated";
@@ -333,7 +338,6 @@ class TestUsersPresenter extends Tester\TestCase
333338
'oldPassword' => $oldPassword,
334339
'password' => $password,
335340
'passwordConfirm' => $passwordConfirm,
336-
'gravatarUrlEnabled' => false
337341
]
338342
);
339343
$response = $this->presenter->run($request);
@@ -345,7 +349,7 @@ class TestUsersPresenter extends Tester\TestCase
345349
$updatedUser = $result["payload"]["user"];
346350
Assert::equal("$titlesBeforeName $firstName $lastName $titlesAfterName", $updatedUser["fullName"]);
347351
Assert::true($login->passwordsMatchOrEmpty($password, $this->presenter->passwordsService));
348-
Assert::null($updatedUser["avatarUrl"]);
352+
Assert::true($updatedUser["avatarUrl"] !== null); // gravatar was not reset
349353

350354
$storedUpdatedUser = $this->users->get($user->getId());
351355
Assert::equal($updatedUser["id"], $storedUpdatedUser->getId());
@@ -459,14 +463,15 @@ class TestUsersPresenter extends Tester\TestCase
459463
[
460464
'titlesBeforeName' => '',
461465
'titlesAfterName' => '',
462-
'gravatarUrlEnabled' => false,
466+
'gravatarUrlEnabled' => null,
463467
'password' => $newPassword,
464468
'passwordConfirm' => $newPassword,
465469
]
466470
);
467471

468472
$updatedUser = $payload["user"];
469473
Assert::equal($updatedUser["privateData"]["email"], PresenterTestHelper::GROUP_SUPERVISOR_LOGIN);
474+
Assert::null($updatedUser["avatarUrl"]);
470475

471476
$login = $this->logins->findByUsernameOrThrow($user->getEmail());
472477
Assert::true($login->passwordsMatch($newPassword, $this->presenter->passwordsService));
@@ -579,13 +584,13 @@ class TestUsersPresenter extends Tester\TestCase
579584
);
580585
Assert::equal($uiData, $payload["privateData"]["uiData"]);
581586

582-
$nested = [ 'pos1' => 0 ];
587+
$nested = ['pos1' => 0];
583588
$payload = PresenterTestHelper::performPresenterRequest(
584589
$this->presenter,
585590
$this->presenterPath,
586591
'POST',
587592
['action' => 'updateUiData', 'id' => $user->getId()],
588-
['uiData' => [ 'stretcherSize' => 54, 'nestedStructure' => $nested ] ]
593+
['uiData' => ['stretcherSize' => 54, 'nestedStructure' => $nested]]
589594
);
590595
$uiData['stretcherSize'] = 54;
591596
$uiData['nestedStructure'] = $nested;
@@ -596,7 +601,7 @@ class TestUsersPresenter extends Tester\TestCase
596601
$this->presenterPath,
597602
'POST',
598603
['action' => 'updateUiData', 'id' => $user->getId()],
599-
[ 'uiData' => $uiData2, 'overwrite' => true ]
604+
['uiData' => $uiData2, 'overwrite' => true]
600605
);
601606
Assert::equal($uiData2, $payload["privateData"]["uiData"]);
602607

@@ -605,7 +610,7 @@ class TestUsersPresenter extends Tester\TestCase
605610
$this->presenterPath,
606611
'POST',
607612
['action' => 'updateUiData', 'id' => $user->getId()],
608-
[ 'uiData' => null ]
613+
['uiData' => null]
609614
);
610615
Assert::equal($uiData2, $payload["privateData"]["uiData"]);
611616

@@ -614,7 +619,7 @@ class TestUsersPresenter extends Tester\TestCase
614619
$this->presenterPath,
615620
'POST',
616621
['action' => 'updateUiData', 'id' => $user->getId()],
617-
[ 'uiData' => null, 'overwrite' => true ]
622+
['uiData' => null, 'overwrite' => true]
618623
);
619624
Assert::null($payload["privateData"]["uiData"]);
620625
}

0 commit comments

Comments
 (0)