ee776d2681
Single Mock Server * mockserver * mockserver * reqs * mockserver * slowrunner * someoptimisedqueries * passedfullsuite * passedfullsuite
203 lines
6.1 KiB
Go
203 lines
6.1 KiB
Go
package resultprocessor_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"queryorchestration/internal/database/repository"
|
|
resultprocessor "queryorchestration/internal/query/result/processor"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestParseDBCollectorQuery(t *testing.T) {
|
|
id := "hello"
|
|
version := int32(1)
|
|
dbResult := repository.ListCollectorQueriesRow{
|
|
Clientid: &id,
|
|
Queryid: &uuid.UUID{},
|
|
Requiredids: []uuid.UUID{},
|
|
Querytype: repository.NullQuerytype{
|
|
Querytype: repository.QuerytypeJsonExtractor,
|
|
Valid: true,
|
|
},
|
|
Queryversion: &version,
|
|
}
|
|
value, err := resultprocessor.ParseDBCollectorQuery(&dbResult)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, uuid.Nil, value.ID)
|
|
assert.Nil(t, value.RequiredQueryIDs)
|
|
assert.Equal(t, int32(1), value.Version)
|
|
assert.Equal(t, resultprocessor.Type(resultprocessor.TypeJsonExtractor), value.Type)
|
|
|
|
dbResult.Querytype = repository.NullQuerytype{}
|
|
_, err = resultprocessor.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 := resultprocessor.ParseDBNullType(qType)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, resultprocessor.Type(resultprocessor.TypeJsonExtractor), value)
|
|
|
|
qType = repository.NullQuerytype{}
|
|
_, err = resultprocessor.ParseDBNullType(qType)
|
|
assert.EqualError(t, err, "invalid database query type")
|
|
|
|
qType = repository.NullQuerytype{Valid: true}
|
|
_, err = resultprocessor.ParseDBNullType(qType)
|
|
assert.EqualError(t, err, "invalid database query type")
|
|
}
|
|
|
|
func TestParseDBType(t *testing.T) {
|
|
qType := repository.QuerytypeJsonExtractor
|
|
value, err := resultprocessor.ParseDBType(qType)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, resultprocessor.Type(resultprocessor.TypeJsonExtractor), value)
|
|
|
|
qType = repository.QuerytypeContextFull
|
|
value, err = resultprocessor.ParseDBType(qType)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, resultprocessor.Type(resultprocessor.TypeContextFull), value)
|
|
}
|
|
|
|
func TestToDBQueryType(t *testing.T) {
|
|
dbQueryType := resultprocessor.Type(resultprocessor.TypeJsonExtractor)
|
|
value, err := resultprocessor.ToDBQueryType(dbQueryType)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, repository.Querytype(repository.QuerytypeJsonExtractor), value)
|
|
|
|
dbQueryType = resultprocessor.Type(-1)
|
|
_, err = resultprocessor.ToDBQueryType(dbQueryType)
|
|
assert.EqualError(t, err, "invalid database query type")
|
|
|
|
dbQueryType = resultprocessor.Type(resultprocessor.TypeContextFull)
|
|
value, err = resultprocessor.ToDBQueryType(dbQueryType)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, repository.Querytype(repository.QuerytypeContextFull), value)
|
|
}
|
|
|
|
func TestToDBQueryTypeArray(t *testing.T) {
|
|
inArr := []resultprocessor.Type{
|
|
resultprocessor.TypeJsonExtractor,
|
|
resultprocessor.TypeContextFull,
|
|
}
|
|
value, err := resultprocessor.ToDBQueryTypeArray(inArr)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, []repository.Querytype{
|
|
repository.QuerytypeJsonExtractor,
|
|
repository.QuerytypeContextFull,
|
|
}, value)
|
|
|
|
inArr = []resultprocessor.Type{
|
|
resultprocessor.Type(-1),
|
|
}
|
|
_, err = resultprocessor.ToDBQueryTypeArray(inArr)
|
|
assert.EqualError(t, err, "invalid database query type")
|
|
}
|
|
|
|
func TestToDBNullQueryType(t *testing.T) {
|
|
dbQueryType := resultprocessor.Type(resultprocessor.TypeJsonExtractor)
|
|
value, err := resultprocessor.ToDBNullQueryType(dbQueryType)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, repository.NullQuerytype{Valid: true, Querytype: repository.QuerytypeJsonExtractor}, value)
|
|
|
|
dbQueryType = resultprocessor.Type(-1)
|
|
_, err = resultprocessor.ToDBNullQueryType(dbQueryType)
|
|
assert.EqualError(t, err, "invalid database query type")
|
|
|
|
dbQueryType = resultprocessor.Type(resultprocessor.TypeContextFull)
|
|
value, err = resultprocessor.ToDBNullQueryType(dbQueryType)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, repository.NullQuerytype{Valid: true, Querytype: repository.QuerytypeContextFull}, value)
|
|
}
|
|
|
|
func TestParseFullQuery(t *testing.T) {
|
|
var q *repository.Fullactivequery
|
|
out, err := resultprocessor.ParseFullQuery(q)
|
|
require.NoError(t, err)
|
|
assert.Nil(t, out)
|
|
|
|
q = &repository.Fullactivequery{
|
|
Queryid: uuid.New(),
|
|
Querytype: repository.QuerytypeContextFull,
|
|
Activeversion: 1,
|
|
Latestversion: 2,
|
|
}
|
|
|
|
out, err = resultprocessor.ParseFullQuery(q)
|
|
require.NoError(t, err)
|
|
assert.EqualExportedValues(t, resultprocessor.Query{
|
|
ID: q.Queryid,
|
|
Type: resultprocessor.TypeContextFull,
|
|
Version: 1,
|
|
}, *out)
|
|
|
|
q = &repository.Fullactivequery{
|
|
Queryid: uuid.New(),
|
|
Querytype: repository.QuerytypeContextFull,
|
|
Activeversion: 1,
|
|
Latestversion: 2,
|
|
Requiredids: []uuid.UUID{},
|
|
}
|
|
|
|
out, err = resultprocessor.ParseFullQuery(q)
|
|
require.NoError(t, err)
|
|
assert.EqualExportedValues(t, &resultprocessor.Query{
|
|
ID: q.Queryid,
|
|
Type: resultprocessor.TypeContextFull,
|
|
Version: 1,
|
|
}, out)
|
|
|
|
q = &repository.Fullactivequery{
|
|
Queryid: uuid.New(),
|
|
Querytype: repository.QuerytypeContextFull,
|
|
Activeversion: 1,
|
|
Latestversion: 2,
|
|
Config: []byte("hello"),
|
|
Requiredids: []uuid.UUID{
|
|
uuid.New(),
|
|
},
|
|
}
|
|
|
|
out, err = resultprocessor.ParseFullQuery(q)
|
|
require.NoError(t, err)
|
|
cfg := "hello"
|
|
assert.EqualExportedValues(t, &resultprocessor.Query{
|
|
ID: q.Queryid,
|
|
Type: resultprocessor.TypeContextFull,
|
|
Version: 1,
|
|
Config: &cfg,
|
|
RequiredQueryIDs: &[]uuid.UUID{q.Requiredids[0]},
|
|
}, out)
|
|
}
|
|
|
|
func TestParseFullQueryArray(t *testing.T) {
|
|
var q []*repository.Fullactivequery
|
|
out, err := resultprocessor.ParseFullQueryArray(q)
|
|
require.NoError(t, err)
|
|
assert.ElementsMatch(t, []*resultprocessor.Query{}, out)
|
|
|
|
q = []*repository.Fullactivequery{
|
|
{
|
|
Queryid: uuid.New(),
|
|
Querytype: repository.QuerytypeContextFull,
|
|
Activeversion: 1,
|
|
Latestversion: 2,
|
|
},
|
|
}
|
|
|
|
out, err = resultprocessor.ParseFullQueryArray(q)
|
|
require.NoError(t, err)
|
|
assert.EqualExportedValues(t, []*resultprocessor.Query{
|
|
{
|
|
ID: q[0].Queryid,
|
|
Type: resultprocessor.TypeContextFull,
|
|
Version: 1,
|
|
},
|
|
}, out)
|
|
|
|
}
|