added new aai-schema-ingest library
[aai/aai-common.git] / aai-schema-ingest / src / test / java / org / onap / aai / edges / EdgeRuleQueryTest.java
1 /** 
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  *
20  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21  */
22
23 package org.onap.aai.edges;
24
25 import static org.junit.Assert.*;
26
27 import java.io.InputStream;
28 import java.util.List;
29 import java.util.Scanner;
30
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.onap.aai.edges.enums.EdgeType;
34
35 import com.jayway.jsonpath.DocumentContext;
36 import com.jayway.jsonpath.JsonPath;
37
38 public class EdgeRuleQueryTest {
39         private DocumentContext testRules;
40         private String readStart = "$.rules.[?]";
41         
42         /* **** DATA SETUP **** */
43         @Before
44         public void setup() {
45                 InputStream is = getClass().getResourceAsStream("/edgeRules/test.json");
46
47                 Scanner scanner = new Scanner(is);
48                 String json = scanner.useDelimiter("\\Z").next();
49                 scanner.close();
50                 
51                 this.testRules = JsonPath.parse(json);
52         }
53
54         /* **** TESTS **** */
55         @Test
56         public void testFromToSingle() {
57                 //rule defined from quux to foo
58                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("quux", "foo").build();
59                 List<Object> results = testRules.read(readStart, q.getFilter());
60                 
61                 assertTrue(results.size() == 1);
62         }
63
64         @Test
65         public void testToFromSingle() {
66                 //rule defined from quux to foo, this is flipped
67                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo", "quux").build();
68                 List<Object> results = testRules.read(readStart, q.getFilter());
69                 
70                 assertTrue(results.size() == 1);
71         }
72         
73         @Test
74         public void testFromToMultiple() {
75                 //rules have two from foo to bar
76                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo", "bar").build();
77                 List<Object> results = testRules.read(readStart, q.getFilter());
78                 assertTrue(results.size() == 2);
79         }
80         
81         @Test
82         public void testToFromMultiple() {
83                 //rules have two from foo to bar
84                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("bar", "foo").build();
85                 List<Object> results = testRules.read(readStart, q.getFilter());
86                 
87                 assertTrue(results.size() == 2);
88                 assertTrue(!(results.get(0).toString().equals(results.get(1).toString())));
89         }
90         
91         @Test
92         public void testJustFrom() {
93                 //there are 4 foo rules (foo>bar, foo>bar, foo>baz, quux>foo)
94                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").build();
95                 List<Object> results = testRules.read(readStart, q.getFilter());
96                 assertTrue(results.size() == 4);
97                 
98                 //there are 2 bar rules
99                 EdgeRuleQuery q2 = new EdgeRuleQuery.Builder("bar").build();
100                 List<Object> results2 = testRules.read(readStart, q2.getFilter());
101                 assertTrue(results2.size() == 2);
102         }
103         
104         @Test
105         public void testWithLabel() {
106                 //there are foo >eats> bar and foo >eatz> bar
107                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo","bar").label("eatz").build();
108                 List<Object> results = testRules.read(readStart, q.getFilter());
109                 assertTrue(results.size() == 1);
110                 assertTrue(results.get(0).toString().contains("eatz"));
111         }
112         
113         @Test
114         public void testCousin() {
115                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").edgeType(EdgeType.COUSIN).build();
116                 List<Object> results = testRules.read(readStart, q.getFilter());
117                 assertTrue(results.size() == 2);
118                 
119                 EdgeRuleQuery q2 = new EdgeRuleQuery.Builder("foo", "bar").edgeType(EdgeType.COUSIN).label("eats").build();
120                 List<Object> results2 = testRules.read(readStart, q2.getFilter());
121                 assertTrue(results2.size() == 1);
122                 assertTrue(results2.get(0).toString().contains("eats"));
123                 
124                 EdgeRuleQuery q3 = new EdgeRuleQuery.Builder("foo","quux").edgeType(EdgeType.COUSIN).build();
125                 List<Object> results3 = testRules.read(readStart, q3.getFilter());
126                 assertTrue(results3.isEmpty());
127         }
128         
129         @Test
130         public void testTree() {
131                 EdgeRuleQuery q = new EdgeRuleQuery.Builder("foo").edgeType(EdgeType.TREE).build();
132                 List<Object> results = testRules.read(readStart, q.getFilter());
133                 assertTrue(results.size() == 2);
134         }
135 }