Skip to content

Commit f94ce23

Browse files
committed
Add coverage for nulls and error propagation
1 parent e8a6e51 commit f94ce23

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/mapper/ImmutableAttributeTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.mockito.junit.MockitoJUnitRunner;
3030
import software.amazon.awssdk.enhanced.dynamodb.AttributeConverter;
3131
import software.amazon.awssdk.enhanced.dynamodb.AttributeConverterProvider;
32+
import software.amazon.awssdk.enhanced.dynamodb.AttributeValueType;
3233
import software.amazon.awssdk.enhanced.dynamodb.EnhancedType;
3334
import software.amazon.awssdk.enhanced.dynamodb.internal.mapper.ResolvedImmutableAttribute;
3435
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
@@ -229,4 +230,43 @@ public void resolve_uses_customConverter() {
229230

230231
assertThat(resultAttributeValue.s()).isEqualTo("test-string-custom");
231232
}
233+
234+
@Test
235+
public void getAttributeValue_getterThrowsRuntimeException_propagatesException() {
236+
ImmutableAttribute<SimpleItem, SimpleItem, String> staticAttribute =
237+
ImmutableAttribute.builder(SimpleItem.class, SimpleItem.class, String.class)
238+
.name("test-attribute")
239+
.getter(item -> { throw new RuntimeException("getter failed"); })
240+
.setter(SimpleItem::setAString)
241+
.build();
242+
243+
ResolvedImmutableAttribute<SimpleItem, SimpleItem, String> resolvedAttribute =
244+
staticAttribute.resolve(AttributeConverterProvider.defaultProvider());
245+
246+
Function<SimpleItem, AttributeValue> attributeValueFunction = resolvedAttribute.attributeGetterMethod();
247+
SimpleItem item = new SimpleItem("test");
248+
249+
assertThatThrownBy(() -> attributeValueFunction.apply(item))
250+
.isInstanceOf(RuntimeException.class)
251+
.hasMessage("getter failed");
252+
}
253+
254+
@Test
255+
public void getAttributeValue_nullFromGetter_returnsNullAttributeValue() {
256+
ImmutableAttribute<SimpleItem, SimpleItem, String> staticAttribute =
257+
ImmutableAttribute.builder(SimpleItem.class, SimpleItem.class, String.class)
258+
.name("test-attribute")
259+
.getter(item -> null)
260+
.setter(SimpleItem::setAString)
261+
.build();
262+
263+
ResolvedImmutableAttribute<SimpleItem, SimpleItem, String> resolvedAttribute =
264+
staticAttribute.resolve(AttributeConverterProvider.defaultProvider());
265+
266+
Function<SimpleItem, AttributeValue> attributeValueFunction = resolvedAttribute.attributeGetterMethod();
267+
SimpleItem item = new SimpleItem("test");
268+
AttributeValue result = attributeValueFunction.apply(item);
269+
270+
assertThat(result.nul()).isTrue();
271+
}
232272
}

0 commit comments

Comments
 (0)