|
16 | 16 | package software.amazon.awssdk.enhanced.dynamodb.internal.update; |
17 | 17 |
|
18 | 18 | import static org.assertj.core.api.Assertions.assertThat; |
| 19 | +import static org.assertj.core.api.Assertions.assertThatThrownBy; |
19 | 20 | import static software.amazon.awssdk.enhanced.dynamodb.model.UpdateExpressionMergeStrategy.LEGACY; |
20 | 21 | import static software.amazon.awssdk.enhanced.dynamodb.model.UpdateExpressionMergeStrategy.PRIORITIZE_HIGHER_SOURCE; |
21 | 22 |
|
@@ -48,6 +49,36 @@ public class UpdateExpressionResolverTest { |
48 | 49 |
|
49 | 50 | private static final TableMetadata TABLE_METADATA = StaticTableMetadata.builder().build(); |
50 | 51 |
|
| 52 | + @Test |
| 53 | + public void build_nonKeyAttributesWithoutTableMetadata_throwsNullPointerException() { |
| 54 | + Map<String, AttributeValue> itemMap = new HashMap<>(); |
| 55 | + itemMap.put("attr", AttributeValue.builder().s("v").build()); |
| 56 | + |
| 57 | + assertThatThrownBy(() -> UpdateExpressionResolver.builder() |
| 58 | + .nonKeyAttributes(itemMap) |
| 59 | + .build()) |
| 60 | + .isInstanceOf(NullPointerException.class) |
| 61 | + .hasMessageContaining("tableMetadata"); |
| 62 | + } |
| 63 | + |
| 64 | + @Test |
| 65 | + public void build_emptyNonKeyAttributesWithoutTableMetadata_succeeds() { |
| 66 | + UpdateExpressionResolver resolver = |
| 67 | + UpdateExpressionResolver |
| 68 | + .builder() |
| 69 | + .nonKeyAttributes(Collections.emptyMap()) |
| 70 | + .requestExpression( |
| 71 | + UpdateExpression.builder() |
| 72 | + .addAction(SetAction.builder() |
| 73 | + .path("a") |
| 74 | + .value(":v") |
| 75 | + .putExpressionValue(":v", AttributeValue.builder().s("x").build()) |
| 76 | + .build()) |
| 77 | + .build()) |
| 78 | + .build(); |
| 79 | + assertThat(resolver.resolve()).isNotNull(); |
| 80 | + } |
| 81 | + |
51 | 82 | // -------------------------------------------------------------- |
52 | 83 | // LEGACY — default merge strategy (order map, extension, request) |
53 | 84 | // -------------------------------------------------------------- |
|
0 commit comments