Skip to content

Commit ff7ae97

Browse files
committed
DATAGEODE-306 - Adapt to non-lenient, strict stubbing for mocks introduced by Mockito 3.15.0.
1 parent bba7f34 commit ff7ae97

File tree

3 files changed

+73
-47
lines changed

3 files changed

+73
-47
lines changed

spring-data-geode/src/main/java/org/springframework/data/gemfire/mapping/PdxReaderPropertyAccessor.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public Class<?>[] getSpecificTargetClasses() {
4444
* @see org.springframework.expression.PropertyAccessor#canRead(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String)
4545
*/
4646
@Override
47-
public boolean canRead(EvaluationContext context, Object target, String name) {
47+
public boolean canRead(EvaluationContext evaluationContext, Object target, String name) {
4848
return ((PdxReader) target).hasField(name);
4949
}
5050

@@ -53,17 +53,19 @@ public boolean canRead(EvaluationContext context, Object target, String name) {
5353
* @see org.springframework.expression.PropertyAccessor#read(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String)
5454
*/
5555
@Override
56-
public TypedValue read(EvaluationContext context, Object target, String name) {
56+
public TypedValue read(EvaluationContext evaluationContext, Object target, String name) {
57+
5758
Object object = ((PdxReader) target).readObject(name);
58-
return object == null ? TypedValue.NULL : new TypedValue(object);
59+
60+
return object != null ? new TypedValue(object) : TypedValue.NULL;
5961
}
6062

6163
/*
6264
* (non-Javadoc)
6365
* @see org.springframework.expression.PropertyAccessor#canWrite(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String)
6466
*/
6567
@Override
66-
public boolean canWrite(EvaluationContext context, Object target, String name) {
68+
public boolean canWrite(EvaluationContext evaluationContext, Object target, String name) {
6769
return false;
6870
}
6971

@@ -72,7 +74,7 @@ public boolean canWrite(EvaluationContext context, Object target, String name) {
7274
* @see org.springframework.expression.PropertyAccessor#write(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String, java.lang.Object)
7375
*/
7476
@Override
75-
public void write(EvaluationContext context, Object target, String name, Object newValue) {
77+
public void write(EvaluationContext evaluationContext, Object target, String name, Object newValue) {
7678
throw new UnsupportedOperationException();
7779
}
7880
}

spring-data-geode/src/test/java/org/springframework/data/gemfire/mapping/PdxReaderPropertyAccessorUnitTests.java

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,72 +15,95 @@
1515
*/
1616
package org.springframework.data.gemfire.mapping;
1717

18-
import static org.hamcrest.CoreMatchers.hasItem;
19-
import static org.hamcrest.CoreMatchers.is;
20-
import static org.junit.Assert.assertThat;
18+
import static org.assertj.core.api.Assertions.assertThat;
2119
import static org.mockito.Mockito.when;
2220

2321
import java.util.Arrays;
2422
import java.util.List;
2523

26-
import org.apache.geode.pdx.PdxReader;
27-
2824
import org.junit.Test;
2925
import org.junit.runner.RunWith;
3026
import org.mockito.Mock;
3127
import org.mockito.junit.MockitoJUnitRunner;
3228

29+
import org.apache.geode.pdx.PdxReader;
30+
3331
import org.springframework.core.convert.TypeDescriptor;
32+
import org.springframework.expression.EvaluationContext;
3433
import org.springframework.expression.TypedValue;
3534

3635
/**
36+
* Unit Tests for {@link PdxReaderPropertyAccessor}.
3737
*
3838
* @author Oliver Gierke
39+
* @author John Blum
40+
* @see org.junit.Test
41+
* @see org.mockito.Mock
42+
* @see org.mockito.Mockito
43+
* @see org.mockito.junit.MockitoJUnitRunner
44+
* @see org.springframework.data.gemfire.mapping.PdxReaderPropertyAccessor
3945
*/
4046
@RunWith(MockitoJUnitRunner.class)
4147
public class PdxReaderPropertyAccessorUnitTests {
4248

4349
@Mock
44-
PdxReader reader;
50+
private EvaluationContext mockEvaluationContext;
51+
52+
@Mock
53+
private PdxReader mockReader;
4554

4655
@Test
4756
public void appliesToPdxReadersOnly() {
57+
4858
List<Class<?>> classes = Arrays.asList(PdxReaderPropertyAccessor.INSTANCE.getSpecificTargetClasses());
49-
assertThat(classes, hasItem(PdxReader.class));
59+
60+
assertThat(classes).contains(PdxReader.class);
5061
}
5162

5263
@Test
5364
public void canReadPropertyIfReaderHasField() {
5465

55-
when(reader.hasField("key")).thenReturn(true);
56-
assertThat(PdxReaderPropertyAccessor.INSTANCE.canRead(null, reader, "key"), is(true));
66+
when(this.mockReader.hasField("key")).thenReturn(true);
5767

58-
when(reader.hasField("key")).thenReturn(false);
59-
assertThat(PdxReaderPropertyAccessor.INSTANCE.canRead(null, reader, "key"), is(false));
68+
assertThat(PdxReaderPropertyAccessor.INSTANCE.canRead(this.mockEvaluationContext, this.mockReader, "key"))
69+
.isTrue();
70+
}
71+
72+
@Test
73+
public void cannotReadPropertyWhenReaderDoesNotHaveField() {
74+
75+
when(this.mockReader.hasField("key")).thenReturn(false);
76+
77+
assertThat(PdxReaderPropertyAccessor.INSTANCE.canRead(this.mockEvaluationContext, this.mockReader, "key"))
78+
.isFalse();
6079
}
6180

6281
@Test
6382
public void returnsTypedNullIfNullIsReadFromReader() {
6483

65-
when(reader.readObject("key")).thenReturn(null);
66-
assertThat(PdxReaderPropertyAccessor.INSTANCE.read(null, reader, "key"), is(TypedValue.NULL));
84+
when(this.mockReader.readObject("key")).thenReturn(null);
85+
86+
assertThat(PdxReaderPropertyAccessor.INSTANCE.read(this.mockEvaluationContext, this.mockReader, "key"))
87+
.isEqualTo(TypedValue.NULL);
6788
}
6889

6990
@Test
7091
public void returnsTypeValueWithValueReadFromReader() {
7192

72-
when(reader.readObject("key")).thenReturn("String");
93+
when(this.mockReader.readObject("key")).thenReturn("String");
7394

74-
TypedValue result = PdxReaderPropertyAccessor.INSTANCE.read(null, reader, "key");
95+
TypedValue result = PdxReaderPropertyAccessor.INSTANCE.read(this.mockEvaluationContext, this.mockReader, "key");
7596

76-
assertThat(result.getTypeDescriptor(), is(TypeDescriptor.valueOf(String.class)));
77-
assertThat(result.getValue(), is((Object) "String"));
97+
assertThat(result.getTypeDescriptor()).isEqualTo(TypeDescriptor.valueOf(String.class));
98+
assertThat(result.getValue()).isEqualTo("String");
7899
}
79100

101+
@SuppressWarnings("all")
80102
@Test(expected = UnsupportedOperationException.class)
81103
public void doesNotSupportWrites() {
82104

83-
assertThat(PdxReaderPropertyAccessor.INSTANCE.canWrite(null, null, null), is(false));
84-
PdxReaderPropertyAccessor.INSTANCE.write(null, null, null, reader);
105+
assertThat(PdxReaderPropertyAccessor.INSTANCE.canWrite(this.mockEvaluationContext, null, null)).isFalse();
106+
107+
PdxReaderPropertyAccessor.INSTANCE.write(this.mockEvaluationContext, null, null, this.mockReader);
85108
}
86109
}

spring-data-geode/src/test/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryUnitTests.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
1716
package org.springframework.data.gemfire.repository.support;
1817

1918
import static org.assertj.core.api.Assertions.assertThat;
@@ -22,24 +21,24 @@
2221
import static org.mockito.Mockito.never;
2322
import static org.mockito.Mockito.times;
2423
import static org.mockito.Mockito.verify;
24+
import static org.mockito.Mockito.verifyNoInteractions;
2525
import static org.mockito.Mockito.verifyNoMoreInteractions;
26-
import static org.mockito.Mockito.verifyZeroInteractions;
2726
import static org.mockito.Mockito.when;
2827
import static org.springframework.data.gemfire.util.RuntimeExceptionFactory.newUnsupportedOperationException;
2928

3029
import java.io.Serializable;
3130
import java.util.Arrays;
3231
import java.util.Collections;
3332

34-
import org.apache.geode.cache.Region;
35-
import org.apache.geode.cache.RegionAttributes;
36-
3733
import org.junit.Before;
3834
import org.junit.Test;
3935
import org.junit.runner.RunWith;
4036
import org.mockito.Mock;
4137
import org.mockito.junit.MockitoJUnitRunner;
4238

39+
import org.apache.geode.cache.Region;
40+
import org.apache.geode.cache.RegionAttributes;
41+
4342
import org.springframework.aop.framework.Advised;
4443
import org.springframework.data.gemfire.GemfireTemplate;
4544
import org.springframework.data.gemfire.mapping.GemfireMappingContext;
@@ -53,11 +52,12 @@
5352
import org.springframework.data.repository.core.support.RepositoryComposition;
5453

5554
/**
56-
* Unit tests for {@link GemfireRepositoryFactory}.
55+
* Unit Tests for {@link GemfireRepositoryFactory}.
5756
*
5857
* @author Oliver Gierke
5958
* @author John Blum
6059
* @see org.junit.Test
60+
* @see org.mockito.Mock
6161
* @see org.mockito.Mockito
6262
* @see org.springframework.data.gemfire.repository.support.GemfireRepositoryFactory
6363
*/
@@ -76,24 +76,24 @@ public class GemfireRepositoryFactoryUnitTests {
7676
@Before
7777
@SuppressWarnings("unchecked")
7878
public void setup() {
79+
7980
this.mappingContext = new GemfireMappingContext();
80-
configureMockRegion(this.mockRegion, "simple", Object.class, Object.class);
81+
82+
configureMockRegion(this.mockRegion, "simple", Object.class);
8183
}
8284

8385
@SuppressWarnings("unchecked")
84-
private <K, V> Region<K, V> mockRegion(String name, Class<K> keyType, Class<V> valueType) {
85-
return configureMockRegion(this.mockRegion, name, keyType, valueType);
86+
private <K, V> Region<K, V> mockRegion(String name, Class<K> keyType) {
87+
return configureMockRegion(this.mockRegion, name, keyType);
8688
}
8789

8890
@SuppressWarnings("unchecked")
89-
private <K, V> Region<K, V> configureMockRegion(Region<K, V> mockRegion, String name,
90-
Class<K> keyType, Class<V> valueType) {
91+
private <K, V> Region<K, V> configureMockRegion(Region<K, V> mockRegion, String name, Class<K> keyType) {
9192

9293
when(mockRegion.getAttributes()).thenReturn(this.mockRegionAttributes);
9394
when(mockRegion.getFullPath()).thenReturn(RegionUtils.toRegionPath(name));
9495
when(mockRegion.getName()).thenReturn(name);
9596
when(this.mockRegionAttributes.getKeyConstraint()).thenReturn(keyType);
96-
when(this.mockRegionAttributes.getValueConstraint()).thenReturn(valueType);
9797

9898
return mockRegion;
9999
}
@@ -122,6 +122,7 @@ public void constructGemfireRepositoryFactorySuccessfully() {
122122
assertThat(repositoryFactory.getRegions()).contains(this.mockRegion);
123123
}
124124

125+
@SuppressWarnings("all")
125126
@Test(expected = IllegalArgumentException.class)
126127
public void constructGemfireRepositoryFactoryWithNullMappingContextThrowsIllegalArgumentException() {
127128

@@ -137,6 +138,7 @@ public void constructGemfireRepositoryFactoryWithNullMappingContextThrowsIllegal
137138
}
138139
}
139140

141+
@SuppressWarnings("all")
140142
@Test(expected = IllegalArgumentException.class)
141143
public void constructGemfireRepositoryFactoryWithNullRegionsThrowsIllegalArgumentException() {
142144

@@ -169,7 +171,7 @@ public void getEntityRegionNameFromEntityRegionName() {
169171

170172
verify(mockPersistentEntity, times(1)).getRegionName();
171173
verify(mockPersistentEntity, never()).getType();
172-
verifyZeroInteractions(mockRepositoryMetadata);
174+
verifyNoInteractions(mockRepositoryMetadata);
173175
}
174176

175177
@Test
@@ -190,7 +192,7 @@ public void getEntityRegionNameFromEntityDomainType() {
190192

191193
verify(mockPersistentEntity, times(1)).getRegionName();
192194
verify(mockPersistentEntity, times(1)).getType();
193-
verifyZeroInteractions(mockRepositoryMetadata);
195+
verifyNoInteractions(mockRepositoryMetadata);
194196
}
195197

196198
@Test
@@ -284,8 +286,8 @@ public void resolveRegionWithRepositoryMetadataAndRegionNamePath() {
284286
RepositoryMetadata mockRepositoryMetadata =
285287
mockRepositoryMetadata(Person.class, Long.class, PeopleRepository.class);
286288

287-
Region<?, ?> mockRegionOne = mockRegion("RegionOne", Person.class, Long.class);
288-
Region<?, ?> mockRegionTwo = mockRegion("RegionTwo", Object.class, Long.class);
289+
Region<?, ?> mockRegionOne = mockRegion("RegionOne", Person.class);
290+
Region<?, ?> mockRegionTwo = mockRegion("RegionTwo", Object.class);
289291

290292
GemfireRepositoryFactory repositoryFactory =
291293
new GemfireRepositoryFactory(Arrays.asList(mockRegionOne, mockRegionTwo), this.mappingContext);
@@ -296,7 +298,7 @@ public void resolveRegionWithRepositoryMetadataAndRegionNamePath() {
296298
assertThat(repositoryFactory.resolveRegion(mockRepositoryMetadata, mockRegionOne.getFullPath()))
297299
.isEqualTo(mockRegionOne);
298300

299-
verifyZeroInteractions(mockRepositoryMetadata);
301+
verifyNoInteractions(mockRepositoryMetadata);
300302
}
301303

302304
@Test(expected = IllegalStateException.class)
@@ -329,7 +331,7 @@ public void newTemplateReturnsGemfireTemplateForPeopleRegion() {
329331
RepositoryMetadata mockRepositoryMetadata =
330332
mockRepositoryMetadata(Person.class, Long.class, PeopleRepository.class);
331333

332-
Region<Long, Person> mockPeopleRegion = mockRegion("People", Long.class, Person.class);
334+
Region<Long, Person> mockPeopleRegion = mockRegion("People", Long.class);
333335

334336
GemfireRepositoryFactory repositoryFactory =
335337
new GemfireRepositoryFactory(Arrays.asList(this.mockRegion, mockPeopleRegion), mappingContext);
@@ -376,7 +378,7 @@ public void newTemplateWithIncompatibleRegionKeyTypeAndRepositoryIdTypeThrowsIll
376378
RepositoryMetadata mockRepositoryMetadata =
377379
mockRepositoryMetadata(Person.class, Long.class, PeopleRepository.class);
378380

379-
Region<Integer, Person> mockPeopleRegion = mockRegion("People", Integer.class, Person.class);
381+
Region<Integer, Person> mockPeopleRegion = mockRegion("People", Integer.class);
380382

381383
GemfireRepositoryFactory gemfireRepositoryFactory =
382384
new GemfireRepositoryFactory(Collections.singleton(mockPeopleRegion), this.mappingContext);
@@ -410,7 +412,7 @@ public void newTemplateWithIncompatibleRepositoryIdTypeAndEntityIdTypeThrowsIlle
410412
RepositoryMetadata mockRepositoryMetadata =
411413
mockRepositoryMetadata(Person.class, Integer.class, PeopleIntegerRepository.class);
412414

413-
Region<String, Person> mockPeopleRegion = mockRegion("People", null, null);
415+
Region<String, Person> mockPeopleRegion = mockRegion("People", null);
414416

415417
GemfireRepositoryFactory gemfireRepositoryFactory =
416418
new GemfireRepositoryFactory(Collections.singleton(mockPeopleRegion), this.mappingContext);
@@ -505,8 +507,7 @@ public void usesConfiguredRepositoryBaseClass() {
505507
assertThat(((Advised) gemfireRepository).getTargetClass()).isEqualTo(TestCustomBaseRepository.class);
506508
}
507509

508-
interface SamplePagingAndSortingRepository extends PagingAndSortingRepository<Person, Long> {
509-
}
510+
interface SamplePagingAndSortingRepository extends PagingAndSortingRepository<Person, Long> { }
510511

511512
static class TestCustomBaseRepository<T, ID extends Serializable> extends SimpleGemfireRepository<T, ID> {
512513

@@ -522,7 +523,7 @@ interface TestCustomRepository<T> {
522523

523524
}
524525

525-
class TestCustomRepositoryImpl<T> implements TestCustomRepository<T> {
526+
static class TestCustomRepositoryImpl<T> implements TestCustomRepository<T> {
526527

527528
@Override
528529
public void doCustomUpdate(T entity) {

0 commit comments

Comments
 (0)