diff --git a/aql/hierarchy_test.go b/aql/hierarchy_test.go new file mode 100644 index 0000000000000000000000000000000000000000..73f4c78be7a01c9285b2bb28ec5e0accb678000e --- /dev/null +++ b/aql/hierarchy_test.go @@ -0,0 +1,87 @@ +package aql + +import ( + "encoding/json" + "fmt" + "testing" + + "git.science.uu.nl/graphpolaris/query-conversion/entity" + "github.com/stretchr/testify/assert" +) + +func TestHierarchyBasic(t *testing.T) { + // Setup for test + // Create query conversion service + query := []byte(`{ + "return": { + "entities": [ + 0, + 1 + ], + "relations": [ + 0 + ], + "groupBys": [] + }, + "entities": [ + { + "name": "parliament", + "ID": 0 + }, + { + "name": "parties", + "ID": 1 + } + ], + "relations": [ + { + "ID": 0, + "name": "member_of", + "depth": { + "min": 1, + "max": 1 + }, + "fromType": "entity", + "fromID": 0, + "toType": "entity", + "toID": 1 + } + ], + "groupBys": [], + "filters": [ + { + "ID": 0, + "filteredType": "entity", + "filteredID": 0, + "attribute": "age", + "dataType": "int", + "matchType": "NEQ", + "value": "40", + "inType": "", + "inID": 0 + }, + { + "ID": 1, + "filteredType": "relation", + "filteredID": 0, + "attribute": "isChairman", + "dataType": "bool", + "matchType": "exact", + "value": "true", + "inType": "", + "inID": 0 + } + ], + "limit": 5000 + } + `) + + // Unmarshall the incoming message into an IncomingJSONQuery object + var JSONQuery entity.IncomingQueryJSON + json.Unmarshal(query, &JSONQuery) + search(&JSONQuery) + + // Assert that the result and the expected result are the same + correctResult := `[[{entity 0} {entity 1}] [{filter 0}] [{relation 0}] [{filter 1}]]` + assert.Equal(t, correctResult, fmt.Sprint(listoflists)) +}