package queryservice import ( "queryorchestration/internal/query" queryprocessor "queryorchestration/internal/query/processor" "testing" "github.com/google/uuid" "github.com/oapi-codegen/runtime/types" "github.com/stretchr/testify/assert" ) func TestParseQueries(t *testing.T) { cfg := "hey" in := []*query.Query{ { ID: uuid.New(), Type: queryprocessor.TypeContextFull, ActiveVersion: 1, LatestVersion: 2, RequiredQueryIDs: &[]uuid.UUID{ uuid.New(), }, Config: &cfg, }, } out, err := parseQueries(in) assert.Nil(t, err) assert.Len(t, out, len(in)) assert.ElementsMatch(t, []Query{ { Id: in[0].ID, Type: CONTEXTFULL, ActiveVersion: 1, LatestVersion: 2, RequiredQueries: &[]types.UUID{ (*in[0].RequiredQueryIDs)[0], }, Config: in[0].Config, }, }, out) } func TestParseQuery(t *testing.T) { cfg := "hey" in := &query.Query{ ID: uuid.New(), Type: queryprocessor.TypeContextFull, ActiveVersion: 1, LatestVersion: 2, RequiredQueryIDs: &[]uuid.UUID{ uuid.New(), }, Config: &cfg, } out, err := parseQuery(in) assert.Nil(t, err) assert.EqualExportedValues(t, Query{ Id: in.ID, Type: CONTEXTFULL, ActiveVersion: 1, LatestVersion: 2, RequiredQueries: &[]types.UUID{ (*in.RequiredQueryIDs)[0], }, Config: in.Config, }, *out) } func TestParseQueryMinimal(t *testing.T) { in := &query.Query{ ID: uuid.New(), Type: queryprocessor.TypeContextFull, ActiveVersion: 1, LatestVersion: 2, } out, err := parseQuery(in) assert.Nil(t, err) assert.EqualExportedValues(t, Query{ Id: in.ID, Type: CONTEXTFULL, ActiveVersion: 1, LatestVersion: 2, }, *out) } func TestParseQueryType(t *testing.T) { qt, err := parseQueryType(queryprocessor.TypeContextFull) assert.Nil(t, err) assert.Equal(t, CONTEXTFULL, qt) qt, err = parseQueryType(queryprocessor.TypeJsonExtractor) assert.Nil(t, err) assert.Equal(t, JSONEXTRACTOR, qt) _, err = parseQueryType(queryprocessor.Type(-1)) assert.NotNil(t, err) } func TestParseSpecQueryType(t *testing.T) { qt, err := parseSpecQueryType(CONTEXTFULL) assert.Nil(t, err) assert.Equal(t, queryprocessor.Type(queryprocessor.TypeContextFull), qt) qt, err = parseSpecQueryType(JSONEXTRACTOR) assert.Nil(t, err) assert.Equal(t, queryprocessor.Type(queryprocessor.TypeJsonExtractor), qt) _, err = parseSpecQueryType("invalid") assert.NotNil(t, err) } func TestParseStringToUUIDArray(t *testing.T) { ids := []uuid.UUID{uuid.New()} out, err := parseStringToUUIDArray(&[]string{ids[0].String()}) assert.Nil(t, err) assert.ElementsMatch(t, ids, *out) _, err = parseStringToUUIDArray(&[]string{"invalid_uuid"}) assert.Error(t, err) out, err = parseStringToUUIDArray(nil) assert.Nil(t, err) assert.Nil(t, out) }