Fix bug to handle cache data import into client LOCAL Regions when no PDX type registry exists.

Resolves gh-91.
This commit is contained in:
John Blum
2020-06-10 23:16:11 -07:00
parent 98ee687a78
commit 5318782bfb
4 changed files with 183 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ package org.springframework.geode.data.json.converter.support;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
@@ -25,10 +26,15 @@ import static org.mockito.Mockito.verify;
import org.junit.Test;
import org.apache.geode.pdx.JSONFormatterException;
import org.apache.geode.pdx.PdxInstance;
import org.springframework.geode.data.json.converter.JsonToObjectConverter;
import org.springframework.geode.pdx.ObjectPdxInstanceAdapter;
import org.springframework.geode.pdx.PdxInstanceWrapper;
import example.app.crm.model.Customer;
/**
* Unit Tests for {@link JSONFormatterJsonToPdxConverter}.
*
@@ -36,7 +42,9 @@ import org.springframework.geode.pdx.PdxInstanceWrapper;
* @see org.junit.Test
* @see org.mockito.Mockito
* @see org.apache.geode.pdx.PdxInstance
* @see org.springframework.geode.data.json.converter.JsonToObjectConverter
* @see org.springframework.geode.data.json.converter.support.JSONFormatterJsonToPdxConverter
* @see org.springframework.geode.pdx.ObjectPdxInstanceAdapter
* @see org.springframework.geode.pdx.PdxInstanceWrapper
* @since 1.3.0
*/
@@ -62,4 +70,30 @@ public class JSONFormatterJsonToPdxConverterUnitTests {
verify(converter, times(1)).jsonFormatterFromJson(eq(json));
verify(converter, times(1)).wrap(eq(mockPdxInstance));
}
@Test
public void convertCallsConvertJsonToObjectToPdx() {
String json = "{ \"name\": \"Jon Doe\" }";
JsonToObjectConverter mockJsonToObjectConverter = mock(JsonToObjectConverter.class);
Customer jonDoe = Customer.newCustomer(1L, "Jon Doe");
JSONFormatterJsonToPdxConverter converter = spy(new JSONFormatterJsonToPdxConverter());
doThrow(new JSONFormatterException("TEST")).when(converter).convertJsonToPdx(eq(json));
doReturn(mockJsonToObjectConverter).when(converter).getJsonToObjectConverter();
doReturn(jonDoe).when(mockJsonToObjectConverter).convert(eq(json));
PdxInstance pdx = converter.convert(json);
assertThat(pdx).isInstanceOf(ObjectPdxInstanceAdapter.class);
assertThat(pdx.getObject()).isSameAs(jonDoe);
verify(converter, times(1)).convertJsonToPdx(eq(json));
verify(converter, times(1)).convertJsonToObjectToPdx(eq(json));
verify(converter, times(1)).getJsonToObjectConverter();
verify(mockJsonToObjectConverter, times(1)).convert(eq(json));
}
}