@SuppressWarnings("unused") public static ErrorResponseBodySerializer generateErrorContractSerializer( boolean excludeEmptyMetadataFromJson, boolean serializeErrorCodeFieldAsIntegerIfPossible ) { return asErrorResponseBodySerializer( generateErrorContractObjectMapper(excludeEmptyMetadataFromJson, serializeErrorCodeFieldAsIntegerIfPossible) ); }
@Test public void asErrorResponseBodySerializer_returns_serializer_that_serializes_as_expected( ) throws JsonProcessingException { // given ObjectMapper objectMapperMock = mock(ObjectMapper.class); ErrorResponseBodySerializer serializer = asErrorResponseBodySerializer(objectMapperMock); String objectMapperResult = UUID.randomUUID().toString(); doReturn(objectMapperResult).when(objectMapperMock).writeValueAsString(anyObject()); Object objectToSerialize = new Object(); ErrorResponseBody errorResponseBodyMock = mock(ErrorResponseBody.class); doReturn(objectToSerialize).when(errorResponseBodyMock).bodyToSerialize(); // when String result = serializer.serializeErrorResponseBodyToString(errorResponseBodyMock); // then assertThat(result).isEqualTo(objectMapperResult); verify(objectMapperMock).writeValueAsString(objectToSerialize); }
@Test public void asErrorResponseBodySerializer_returns_serializer_that_propagates_JsonProcessingException_as_RuntimeException( ) throws JsonProcessingException { // given ObjectMapper objectMapperMock = mock(ObjectMapper.class); ErrorResponseBodySerializer serializer = asErrorResponseBodySerializer(objectMapperMock); ErrorResponseBody errorResponseBodyMock = mock(ErrorResponseBody.class); doReturn(new Object()).when(errorResponseBodyMock).bodyToSerialize(); JsonProcessingException jsonProcessingExceptionMock = mock(JsonProcessingException.class); doThrow(jsonProcessingExceptionMock).when(objectMapperMock).writeValueAsString(anyObject()); // when Throwable ex = catchThrowable(() -> serializer.serializeErrorResponseBodyToString(errorResponseBodyMock)); // then assertThat(ex) .isNotNull() .isExactlyInstanceOf(RuntimeException.class) .hasCause(jsonProcessingExceptionMock); }
@SuppressWarnings("unused") public static ErrorResponseBodySerializer generateErrorContractSerializer( boolean excludeEmptyMetadataFromJson, boolean serializeErrorCodeFieldAsIntegerIfPossible ) { return asErrorResponseBodySerializer( generateErrorContractObjectMapper(excludeEmptyMetadataFromJson, serializeErrorCodeFieldAsIntegerIfPossible) ); }
@DataProvider(value = { "NULL_INSTANCE", "NULL_BODY_TO_SERIALIZE" }) @Test public void asErrorResponseBodySerializer_returns_serializer_that_returns_null_when_it_is_supposed_to( ErrorResponseBodyScenario scenario ) { // given ErrorResponseBody errorResponseBody = scenario.generateErrorResponseBody(); ObjectMapper objectMapperMock = mock(ObjectMapper.class); ErrorResponseBodySerializer serializer = asErrorResponseBodySerializer(objectMapperMock); // when String result = serializer.serializeErrorResponseBodyToString(errorResponseBody); // then assertThat(result).isNull(); verifyZeroInteractions(objectMapperMock); }