Files
query-orchestration/internal/query/processor/parse_test.go
T
Michael McGuinness 4ccb980593 Merged in feature/jobcollector (pull request #30)
Initial Job Collector (changes pending)

* movearroundtocleancollector

* internalgetfunctions

* completecollectorquery

* simplify

* fixtests

* addvendor

* noplaceholder
2025-01-21 12:28:46 +00:00

110 lines
3.8 KiB
Go

package queryprocessor_test
import (
"queryorchestration/internal/database/repository"
queryprocessor "queryorchestration/internal/query/processor"
"testing"
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype"
"github.com/stretchr/testify/assert"
)
func TestParseDBCollectorQuery(t *testing.T) {
dbResult := repository.Collectorquerydependencytree{
Collectorid: pgtype.UUID{},
Queryid: pgtype.UUID{},
Requiredids: []pgtype.UUID{},
Type: repository.QuerytypeJsonExtractor,
Queryversion: 1,
}
value, err := queryprocessor.ParseDBCollectorQuery(&dbResult)
assert.Nil(t, err)
assert.Equal(t, uuid.Nil, value.ID)
assert.Nil(t, value.RequiredQueryIDs)
assert.Equal(t, int32(1), value.Version)
assert.Equal(t, queryprocessor.Type(queryprocessor.TypeJsonExtractor), value.Type)
dbResult.Type = repository.Querytype("")
_, err = queryprocessor.ParseDBCollectorQuery(&dbResult)
assert.EqualError(t, err, "invalid database query type")
}
func TestParseDBNullType(t *testing.T) {
qType := repository.NullQuerytype{Valid: true, Querytype: repository.QuerytypeJsonExtractor}
value, err := queryprocessor.ParseDBNullType(qType)
assert.Nil(t, err)
assert.Equal(t, queryprocessor.Type(queryprocessor.TypeJsonExtractor), value)
qType = repository.NullQuerytype{}
_, err = queryprocessor.ParseDBNullType(qType)
assert.EqualError(t, err, "invalid database query type")
qType = repository.NullQuerytype{Valid: true}
_, err = queryprocessor.ParseDBNullType(qType)
assert.EqualError(t, err, "invalid database query type")
}
func TestParseDBType(t *testing.T) {
qType := repository.QuerytypeJsonExtractor
value, err := queryprocessor.ParseDBType(qType)
assert.Nil(t, err)
assert.Equal(t, queryprocessor.Type(queryprocessor.TypeJsonExtractor), value)
qType = repository.QuerytypeContextFull
value, err = queryprocessor.ParseDBType(qType)
assert.Nil(t, err)
assert.Equal(t, queryprocessor.Type(queryprocessor.TypeContextFull), value)
}
func TestToDBQueryType(t *testing.T) {
dbQueryType := queryprocessor.Type(queryprocessor.TypeJsonExtractor)
value, err := queryprocessor.ToDBQueryType(dbQueryType)
assert.Nil(t, err)
assert.Equal(t, repository.Querytype(repository.QuerytypeJsonExtractor), value)
dbQueryType = queryprocessor.Type(-1)
_, err = queryprocessor.ToDBQueryType(dbQueryType)
assert.EqualError(t, err, "invalid database query type")
dbQueryType = queryprocessor.Type(queryprocessor.TypeContextFull)
value, err = queryprocessor.ToDBQueryType(dbQueryType)
assert.Nil(t, err)
assert.Equal(t, repository.Querytype(repository.QuerytypeContextFull), value)
}
func TestToDBQueryTypeArray(t *testing.T) {
inArr := []queryprocessor.Type{
queryprocessor.TypeJsonExtractor,
queryprocessor.TypeContextFull,
}
value, err := queryprocessor.ToDBQueryTypeArray(inArr)
assert.Nil(t, err)
assert.Equal(t, []repository.Querytype{
repository.QuerytypeJsonExtractor,
repository.QuerytypeContextFull,
}, value)
inArr = []queryprocessor.Type{
queryprocessor.Type(-1),
}
_, err = queryprocessor.ToDBQueryTypeArray(inArr)
assert.EqualError(t, err, "invalid database query type")
}
func TestToDBNullQueryType(t *testing.T) {
dbQueryType := queryprocessor.Type(queryprocessor.TypeJsonExtractor)
value, err := queryprocessor.ToDBNullQueryType(dbQueryType)
assert.Nil(t, err)
assert.Equal(t, repository.NullQuerytype{Valid: true, Querytype: repository.QuerytypeJsonExtractor}, value)
dbQueryType = queryprocessor.Type(-1)
_, err = queryprocessor.ToDBNullQueryType(dbQueryType)
assert.EqualError(t, err, "invalid database query type")
dbQueryType = queryprocessor.Type(queryprocessor.TypeContextFull)
value, err = queryprocessor.ToDBNullQueryType(dbQueryType)
assert.Nil(t, err)
assert.Equal(t, repository.NullQuerytype{Valid: true, Querytype: repository.QuerytypeContextFull}, value)
}