### Question:
TipsAndTricksDtoRequestValidator implements ConstraintValidator<ValidTipsAndTricksDtoRequest, TipsAndTricksDtoRequest> { @Override public boolean isValid(TipsAndTricksDtoRequest dto, ConstraintValidatorContext constraintValidatorContext) { if (dto.getSource() != null && !dto.getSource().isEmpty()) { isUrlValid(dto.getSource()); } if (tagService.isValidNumOfUniqueTags(dto.getTags())) { if (tagService.isAllTipsAndTricksValid(dto.getTags())) { return true; } throw new TagNotFoundDuringValidation(ErrorMessage.TAGS_NOT_FOUND); } return true; }  @Override void initialize(ValidTipsAndTricksDtoRequest constraintAnnotation); @Override boolean isValid(TipsAndTricksDtoRequest dto, ConstraintValidatorContext constraintValidatorContext);  }### Answer:
@Test void isValidTrueTest() throws MalformedURLException { TipsAndTricksDtoRequest tipsAndTricksDtoRequest = getTipsAndTricksDtoRequest(); tipsAndTricksDtoRequest.setSource(getUrl().toString()); when(tagService.isValidNumOfUniqueTags(tipsAndTricksDtoRequest.getTags())) .thenReturn(true); when(tagService.isAllTipsAndTricksValid(tipsAndTricksDtoRequest.getTags())).thenReturn(true); assertTrue(validator.isValid(tipsAndTricksDtoRequest, null)); }
@Test void isValidTagNotFoundDuringValidationTest() throws MalformedURLException { TipsAndTricksDtoRequest tipsAndTricksDtoRequest = getTipsAndTricksDtoRequest(); tipsAndTricksDtoRequest.setSource(getUrl().toString()); when(tagService.isValidNumOfUniqueTags(tipsAndTricksDtoRequest.getTags())) .thenReturn(true); when(tagService.isAllTipsAndTricksValid(tipsAndTricksDtoRequest.getTags())).thenReturn(false); assertThrows(TagNotFoundDuringValidation.class, () -> validator.isValid(tipsAndTricksDtoRequest, null)); }
@Test void isValidInvalidURLExceptionTest() { TipsAndTricksDtoRequest tipsAndTricksDtoRequest = getTipsAndTricksDtoRequest(); tipsAndTricksDtoRequest.setSource("ttt: assertThrows(InvalidURLException.class, () -> validator.isValid(tipsAndTricksDtoRequest, null)); }