• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package software.amazon.awssdk.protocols.json.internal.dom;
2 
3 import static org.assertj.core.api.Assertions.assertThat;
4 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
5 
6 import java.math.BigDecimal;
7 import java.text.ParseException;
8 import java.util.ArrayList;
9 import java.util.LinkedHashMap;
10 import java.util.List;
11 import java.util.Map;
12 import org.junit.jupiter.api.Test;
13 import software.amazon.awssdk.core.SdkNumber;
14 import software.amazon.awssdk.core.document.Document;
15 import software.amazon.awssdk.protocols.json.internal.unmarshall.document.DocumentUnmarshaller;
16 import software.amazon.awssdk.protocols.jsoncore.JsonNode;
17 import software.amazon.awssdk.protocols.jsoncore.internal.EmbeddedObjectJsonNode;
18 
19 
20 public class DocumentUnmarshallerTest {
21     @Test
testDocumentFromNumberNode()22     public void testDocumentFromNumberNode() throws ParseException {
23         JsonNode node = JsonNode.parser().parse("100");
24         assertThat(Document.fromNumber(SdkNumber.fromInteger(100)).asNumber().intValue())
25                 .isEqualTo(node.visit(new DocumentUnmarshaller()).asNumber().intValue());
26     }
27 
28     @Test
testDocumentFromBoolean()29     public void testDocumentFromBoolean() {
30         JsonNode node = JsonNode.parser().parse("true");
31         assertThat(Document.fromBoolean(true)).isEqualTo(node.visit(new DocumentUnmarshaller()));
32     }
33 
34     @Test
testDocumentFromString()35     public void testDocumentFromString() {
36         JsonNode node = JsonNode.parser().parse("\"100.00\"");
37         assertThat(Document.fromString("100.00")).isEqualTo(node.visit(new DocumentUnmarshaller()));
38     }
39 
40     @Test
testDocumentFromNull()41     public void testDocumentFromNull() {
42         JsonNode node = JsonNode.parser().parse("null");
43         assertThat(Document.fromNull()).isEqualTo(node.visit(new DocumentUnmarshaller()));
44     }
45 
46     @Test
testExceptionIsThrownFromEmbededObjectType()47     public void testExceptionIsThrownFromEmbededObjectType() {
48         assertThatExceptionOfType(UnsupportedOperationException.class)
49                 .isThrownBy(() -> new EmbeddedObjectJsonNode(new Object()).visit(new DocumentUnmarshaller()));
50     }
51 
52     @Test
testDocumentFromObjectNode()53     public void testDocumentFromObjectNode(){
54         JsonNode node = JsonNode.parser().parse("{\"firstKey\": \"firstValue\", \"secondKey\": \"secondValue\"}");
55 
56         Document documentMap = node.visit(new DocumentUnmarshaller());
57         Map<String, Document> expectedMap = new LinkedHashMap<>();
58         expectedMap.put("firstKey", Document.fromString("firstValue"));
59         expectedMap.put("secondKey", Document.fromString("secondValue"));
60         final Document expectedDocumentMap = Document.fromMap(expectedMap);
61         assertThat(documentMap).isEqualTo(expectedDocumentMap);
62     }
63 
64     @Test
testDocumentFromArrayNode()65     public void testDocumentFromArrayNode(){
66         JsonNode node = JsonNode.parser().parse("[\"One\", 10, true, null]");
67         List<Document> documentList = new ArrayList<>();
68         documentList.add(Document.fromString("One"));
69         documentList.add(Document.fromNumber(SdkNumber.fromBigDecimal(BigDecimal.TEN)));
70         documentList.add(Document.fromBoolean(true));
71         documentList.add(Document.fromNull());
72         final Document document = Document.fromList(documentList);
73         final Document actualDocument = node.visit(new DocumentUnmarshaller());
74         assertThat(actualDocument).isEqualTo(document);
75     }
76 }
77