У меня есть PutMapping
, который сначала проверит Reward-Entity
, а затем, если существует, продолжит обновление Entity
@PutMapping
public ResponseEntity<RewardResponse> updateValidReward(Principal updatedPrincipal,
@RequestBody RewardUpdateRequest rewardUpdateRequest) {
Optional<RewardEntity> rewardEntityInDatabase =
RewardService.getRewardById(rewardUpdateRequest.getRewardId());
if (!rewardEntityInDatabase.isPresent()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
RewardEntity updatedReward = updateReward(updatedPrincipal,
rewardUpdateRequest, rewardEntityInDatabase.get());
RewardResponse updatedRewardResponse = RewardResponse.builder()
.reward(RewardMapper.fromRewardEntity(updatedReward))
.build();
return ResponseEntity.ok(updatedRewardResponse);
}
Для меня это сейчас непросто, когда я пытаюсь написать для этого Test-case
в следующем формате
ResponseEntity<RewardResponse> rewardResponse =
controller.updateValidReward(principal, rewardUpdateRequest);
RewardApi rewardApiToValidate = rewardResponse.getBody().getReward();
assertThat(rewardApiExpected.getRewardTitle()).isEqualTo(rewardApiToValidate.getRewardTitle());
assertThat(rewardApiExpected.getRewardText()).isEqualTo(rewardApiToValidate.getRewardText());
Я всегда получаю NullPointerException
, когда выполняется нижняя строка в тестовом коде
rewardResponse.getBody().getReward();
потому что всегда нижеприведенное условие в фактическом коде становится true
и оно всегда возвращает HttpStatus.NOT_FOUND
if (!rewardEntityInDatabase.isPresent()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
Как с этим справиться?