|
54 | 54 | import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.InvalidBean;
|
55 | 55 | import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.ListBean;
|
56 | 56 | import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.MapBean;
|
| 57 | +import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.ParameterizedAbstractBean; |
| 58 | +import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.ParameterizedDocumentBean; |
57 | 59 | import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.PrimitiveTypesBean;
|
58 | 60 | import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.RemappedAttributeBean;
|
59 | 61 | import software.amazon.awssdk.enhanced.dynamodb.mapper.testbeans.SecondaryIndexBean;
|
@@ -180,13 +182,156 @@ public void documentBean_correctlyMapsAttributes() {
|
180 | 182 | .m(singletonMap("attribute2", stringValue("two")))
|
181 | 183 | .build();
|
182 | 184 |
|
183 |
| - Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(documentBean, false); |
| 185 | + Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(documentBean, true); |
184 | 186 | assertThat(itemMap.size(), is(3));
|
185 | 187 | assertThat(itemMap, hasEntry("id", stringValue("id-value")));
|
186 | 188 | assertThat(itemMap, hasEntry("attribute1", stringValue("one")));
|
187 | 189 | assertThat(itemMap, hasEntry("abstractBean", expectedDocument));
|
188 | 190 | }
|
189 | 191 |
|
| 192 | + @Test |
| 193 | + public void documentBean_list_correctlyMapsAttributes() { |
| 194 | + BeanTableSchema<DocumentBean> beanTableSchema = BeanTableSchema.create(DocumentBean.class); |
| 195 | + AbstractBean abstractBean1 = new AbstractBean(); |
| 196 | + abstractBean1.setAttribute2("two"); |
| 197 | + AbstractBean abstractBean2 = new AbstractBean(); |
| 198 | + abstractBean2.setAttribute2("three"); |
| 199 | + DocumentBean documentBean = new DocumentBean(); |
| 200 | + documentBean.setId("id-value"); |
| 201 | + documentBean.setAttribute1("one"); |
| 202 | + documentBean.setAbstractBeanList(Arrays.asList(abstractBean1, abstractBean2)); |
| 203 | + |
| 204 | + AttributeValue expectedDocument1 = AttributeValue.builder() |
| 205 | + .m(singletonMap("attribute2", stringValue("two"))) |
| 206 | + .build(); |
| 207 | + AttributeValue expectedDocument2 = AttributeValue.builder() |
| 208 | + .m(singletonMap("attribute2", stringValue("three"))) |
| 209 | + .build(); |
| 210 | + AttributeValue expectedList = AttributeValue.builder().l(expectedDocument1, expectedDocument2).build(); |
| 211 | + |
| 212 | + Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(documentBean, true); |
| 213 | + assertThat(itemMap.size(), is(3)); |
| 214 | + assertThat(itemMap, hasEntry("id", stringValue("id-value"))); |
| 215 | + assertThat(itemMap, hasEntry("attribute1", stringValue("one"))); |
| 216 | + assertThat(itemMap, hasEntry("abstractBeanList", expectedList)); |
| 217 | + } |
| 218 | + |
| 219 | + @Test |
| 220 | + public void documentBean_map_correctlyMapsAttributes() { |
| 221 | + BeanTableSchema<DocumentBean> beanTableSchema = BeanTableSchema.create(DocumentBean.class); |
| 222 | + AbstractBean abstractBean1 = new AbstractBean(); |
| 223 | + abstractBean1.setAttribute2("two"); |
| 224 | + AbstractBean abstractBean2 = new AbstractBean(); |
| 225 | + abstractBean2.setAttribute2("three"); |
| 226 | + DocumentBean documentBean = new DocumentBean(); |
| 227 | + documentBean.setId("id-value"); |
| 228 | + documentBean.setAttribute1("one"); |
| 229 | + |
| 230 | + Map<String, AbstractBean> abstractBeanMap = new HashMap<>(); |
| 231 | + abstractBeanMap.put("key1", abstractBean1); |
| 232 | + abstractBeanMap.put("key2", abstractBean2); |
| 233 | + documentBean.setAbstractBeanMap(abstractBeanMap); |
| 234 | + |
| 235 | + AttributeValue expectedDocument1 = AttributeValue.builder() |
| 236 | + .m(singletonMap("attribute2", stringValue("two"))) |
| 237 | + .build(); |
| 238 | + AttributeValue expectedDocument2 = AttributeValue.builder() |
| 239 | + .m(singletonMap("attribute2", stringValue("three"))) |
| 240 | + .build(); |
| 241 | + Map<String, AttributeValue> expectedAttributeValueMap = new HashMap<>(); |
| 242 | + expectedAttributeValueMap.put("key1", expectedDocument1); |
| 243 | + expectedAttributeValueMap.put("key2", expectedDocument2); |
| 244 | + AttributeValue expectedMap = AttributeValue.builder().m(expectedAttributeValueMap).build(); |
| 245 | + |
| 246 | + Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(documentBean, true); |
| 247 | + assertThat(itemMap.size(), is(3)); |
| 248 | + assertThat(itemMap, hasEntry("id", stringValue("id-value"))); |
| 249 | + assertThat(itemMap, hasEntry("attribute1", stringValue("one"))); |
| 250 | + assertThat(itemMap, hasEntry("abstractBeanMap", expectedMap)); |
| 251 | + } |
| 252 | + |
| 253 | + @Test |
| 254 | + public void parameterizedDocumentBean_correctlyMapsAttributes() { |
| 255 | + BeanTableSchema<ParameterizedDocumentBean> beanTableSchema = BeanTableSchema.create(ParameterizedDocumentBean.class); |
| 256 | + ParameterizedAbstractBean<String> abstractBean = new ParameterizedAbstractBean<>(); |
| 257 | + abstractBean.setAttribute2("two"); |
| 258 | + ParameterizedDocumentBean documentBean = new ParameterizedDocumentBean(); |
| 259 | + documentBean.setId("id-value"); |
| 260 | + documentBean.setAttribute1("one"); |
| 261 | + documentBean.setAbstractBean(abstractBean); |
| 262 | + |
| 263 | + AttributeValue expectedDocument = AttributeValue.builder() |
| 264 | + .m(singletonMap("attribute2", stringValue("two"))) |
| 265 | + .build(); |
| 266 | + |
| 267 | + Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(documentBean, true); |
| 268 | + assertThat(itemMap.size(), is(3)); |
| 269 | + assertThat(itemMap, hasEntry("id", stringValue("id-value"))); |
| 270 | + assertThat(itemMap, hasEntry("attribute1", stringValue("one"))); |
| 271 | + assertThat(itemMap, hasEntry("abstractBean", expectedDocument)); |
| 272 | + } |
| 273 | + |
| 274 | + @Test |
| 275 | + public void parameterizedDocumentBean_list_correctlyMapsAttributes() { |
| 276 | + BeanTableSchema<ParameterizedDocumentBean> beanTableSchema = BeanTableSchema.create(ParameterizedDocumentBean.class); |
| 277 | + ParameterizedAbstractBean<String> abstractBean1 = new ParameterizedAbstractBean<>(); |
| 278 | + abstractBean1.setAttribute2("two"); |
| 279 | + ParameterizedAbstractBean<String> abstractBean2 = new ParameterizedAbstractBean<>(); |
| 280 | + abstractBean2.setAttribute2("three"); |
| 281 | + ParameterizedDocumentBean documentBean = new ParameterizedDocumentBean(); |
| 282 | + documentBean.setId("id-value"); |
| 283 | + documentBean.setAttribute1("one"); |
| 284 | + documentBean.setAbstractBeanList(Arrays.asList(abstractBean1, abstractBean2)); |
| 285 | + |
| 286 | + AttributeValue expectedDocument1 = AttributeValue.builder() |
| 287 | + .m(singletonMap("attribute2", stringValue("two"))) |
| 288 | + .build(); |
| 289 | + AttributeValue expectedDocument2 = AttributeValue.builder() |
| 290 | + .m(singletonMap("attribute2", stringValue("three"))) |
| 291 | + .build(); |
| 292 | + AttributeValue expectedList = AttributeValue.builder().l(expectedDocument1, expectedDocument2).build(); |
| 293 | + |
| 294 | + Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(documentBean, true); |
| 295 | + assertThat(itemMap.size(), is(3)); |
| 296 | + assertThat(itemMap, hasEntry("id", stringValue("id-value"))); |
| 297 | + assertThat(itemMap, hasEntry("attribute1", stringValue("one"))); |
| 298 | + assertThat(itemMap, hasEntry("abstractBeanList", expectedList)); |
| 299 | + } |
| 300 | + |
| 301 | + @Test |
| 302 | + public void parameterizedDocumentBean_map_correctlyMapsAttributes() { |
| 303 | + BeanTableSchema<ParameterizedDocumentBean> beanTableSchema = BeanTableSchema.create(ParameterizedDocumentBean.class); |
| 304 | + ParameterizedAbstractBean<String> abstractBean1 = new ParameterizedAbstractBean<>(); |
| 305 | + abstractBean1.setAttribute2("two"); |
| 306 | + ParameterizedAbstractBean<String> abstractBean2 = new ParameterizedAbstractBean<>(); |
| 307 | + abstractBean2.setAttribute2("three"); |
| 308 | + ParameterizedDocumentBean documentBean = new ParameterizedDocumentBean(); |
| 309 | + documentBean.setId("id-value"); |
| 310 | + documentBean.setAttribute1("one"); |
| 311 | + |
| 312 | + Map<String, ParameterizedAbstractBean<String>> abstractBeanMap = new HashMap<>(); |
| 313 | + abstractBeanMap.put("key1", abstractBean1); |
| 314 | + abstractBeanMap.put("key2", abstractBean2); |
| 315 | + documentBean.setAbstractBeanMap(abstractBeanMap); |
| 316 | + |
| 317 | + AttributeValue expectedDocument1 = AttributeValue.builder() |
| 318 | + .m(singletonMap("attribute2", stringValue("two"))) |
| 319 | + .build(); |
| 320 | + AttributeValue expectedDocument2 = AttributeValue.builder() |
| 321 | + .m(singletonMap("attribute2", stringValue("three"))) |
| 322 | + .build(); |
| 323 | + Map<String, AttributeValue> expectedAttributeValueMap = new HashMap<>(); |
| 324 | + expectedAttributeValueMap.put("key1", expectedDocument1); |
| 325 | + expectedAttributeValueMap.put("key2", expectedDocument2); |
| 326 | + AttributeValue expectedMap = AttributeValue.builder().m(expectedAttributeValueMap).build(); |
| 327 | + |
| 328 | + Map<String, AttributeValue> itemMap = beanTableSchema.itemToMap(documentBean, true); |
| 329 | + assertThat(itemMap.size(), is(3)); |
| 330 | + assertThat(itemMap, hasEntry("id", stringValue("id-value"))); |
| 331 | + assertThat(itemMap, hasEntry("attribute1", stringValue("one"))); |
| 332 | + assertThat(itemMap, hasEntry("abstractBeanMap", expectedMap)); |
| 333 | + } |
| 334 | + |
190 | 335 | @Test
|
191 | 336 | public void extendedBean_correctlyExtendsAttributes() {
|
192 | 337 | BeanTableSchema<ExtendedBean> beanTableSchema = BeanTableSchema.create(ExtendedBean.class);
|
|
0 commit comments