package queryprocessor_test import ( "queryorchestration/internal/database/repository" queryprocessor "queryorchestration/internal/queryProcessor" "testing" "github.com/google/uuid" "github.com/jackc/pgx/v5/pgtype" "github.com/stretchr/testify/assert" ) func TestParseDBCollectorQuery(t *testing.T) { dbResult := repository.GetCollectorQueriesRow{ Collectorid: pgtype.UUID{}, Queryid: pgtype.UUID{}, Requiredids: []pgtype.UUID{}, Type: repository.NullQuerytype{Valid: true, Querytype: repository.QuerytypeJsonExtractor}, Queryversion: pgtype.Int4{}, } value, err := queryprocessor.ParseDBCollectorQuery(&dbResult) assert.Nil(t, err) assert.Equal(t, uuid.Nil, value.ID) assert.Equal(t, []uuid.UUID{}, value.RequiredQueryIDs) assert.Equal(t, int32(0), value.Version) assert.Equal(t, queryprocessor.Type(queryprocessor.TypeJsonExtractor), value.Type) dbResult.Type = repository.NullQuerytype{} _, 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 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) }