AdviceTraits { public static Optional<MediaType> getProblemMediaType(final List<MediaType> mediaTypes) { for (final MediaType mediaType : mediaTypes) { if (mediaType.includes(APPLICATION_JSON) || mediaType.includes(PROBLEM)) { return Optional.of(PROBLEM); } else if (mediaType.includes(X_PROBLEM)) { return Optional.of(X_PROBLEM); } } return Optional.empty(); } private  AdviceTraits(); static void log(
            final Throwable throwable,
            final HttpStatus status); static ResponseEntity<Problem> fallback(
            final Problem problem,
            final HttpHeaders headers); static Optional<MediaType> getProblemMediaType(final List<MediaType> mediaTypes);  }
@Test void findsJsonMediaType() { List<MediaType> mediaTypes = Arrays.asList(MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON, MediaTypes.X_PROBLEM); Optional<MediaType> mediaType = AdviceTraits.getProblemMediaType(mediaTypes); assertTrue(mediaType.isPresent()); assertThat(mediaType.get(), is(MediaTypes.PROBLEM)); }
@Test void findsProblemMediaType() { List<MediaType> mediaTypes = Arrays.asList(MediaType.TEXT_PLAIN, MediaTypes.PROBLEM, MediaTypes.X_PROBLEM); Optional<MediaType> mediaType = AdviceTraits.getProblemMediaType(mediaTypes); assertTrue(mediaType.isPresent()); assertThat(mediaType.get(), is(MediaTypes.PROBLEM)); }
@Test void findsXProblemMediaType() { List<MediaType> mediaTypes = Arrays.asList(MediaType.TEXT_PLAIN, MediaTypes.X_PROBLEM, MediaTypes.PROBLEM); Optional<MediaType> mediaType = AdviceTraits.getProblemMediaType(mediaTypes); assertTrue(mediaType.isPresent()); assertThat(mediaType.get(), is(MediaTypes.X_PROBLEM)); }
@Test void returnsEmptyIfNoProblemCompatibleMediaType() { List<MediaType> mediaTypes = Arrays.asList(MediaType.TEXT_PLAIN, MediaType.IMAGE_PNG); Optional<MediaType> mediaType = AdviceTraits.getProblemMediaType(mediaTypes); assertFalse(mediaType.isPresent()); }