Skip to content
Snippets Groups Projects
hierarchy_test.go 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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))
    }