From 67a50bac0a78fc01ea5a53a6406f3776c6bba218 Mon Sep 17 00:00:00 2001 From: Michael McGuinness Date: Mon, 13 Jan 2025 15:02:43 +0000 Subject: [PATCH] Merged in bugfix/integrationstests (pull request #7) Add get, list, create, deprecate query service integration tests * showtestlines * more config * roundone * splituptests * splitfurther --- internal/query/create.go | 2 +- internal/query/get.go | 5 +- internal/query/get_test.go | 45 ++++++++++++++ test/{ => queryRunner}/queryrunner_test.go | 0 test/queryService/exportservice_test.go | 23 ++++++++ test/queryService/jobcollectorservice_test.go | 31 ++++++++++ test/queryService/listqueries_test.go | 39 ++++++++++++ test/queryService/queryservice_test.go | 59 +++++++++++++++++++ test/queryService/testquery_test.go | 39 ++++++++++++ test/queryservice_test.go | 48 --------------- 10 files changed, 241 insertions(+), 50 deletions(-) rename test/{ => queryRunner}/queryrunner_test.go (100%) create mode 100644 test/queryService/exportservice_test.go create mode 100644 test/queryService/jobcollectorservice_test.go create mode 100644 test/queryService/listqueries_test.go create mode 100644 test/queryService/queryservice_test.go create mode 100644 test/queryService/testquery_test.go delete mode 100644 test/queryservice_test.go diff --git a/internal/query/create.go b/internal/query/create.go index b7eb57ac..1a3f5f18 100644 --- a/internal/query/create.go +++ b/internal/query/create.go @@ -42,7 +42,7 @@ func (s *Service) submitCreate(ctx context.Context, entity *queryprocessor.Creat if err != nil { return uuid.Nil, err } - // defer tx.Rollback(ctx) + defer tx.Rollback(ctx) qtx := s.db.Queries.WithTx(tx) diff --git a/internal/query/get.go b/internal/query/get.go index 6549c233..ea3c3511 100644 --- a/internal/query/get.go +++ b/internal/query/get.go @@ -28,7 +28,10 @@ func (s *Service) Get(ctx context.Context, id uuid.UUID) (*Query, error) { } func ParseFullActiveQuery(q *repository.Fullactivequery) (*Query, error) { - reqQueryIDs := database.MustToUUIDArray(q.Requiredids) + reqQueryIDs := []uuid.UUID{} + if !(len(q.Requiredids) == 0 || len(q.Requiredids) == 1 && database.MustToUUID(q.Requiredids[0]) == uuid.Nil) { + reqQueryIDs = database.MustToUUIDArray(q.Requiredids) + } qType, err := queryprocessor.ParseDBType(q.Type) if err != nil { diff --git a/internal/query/get_test.go b/internal/query/get_test.go index 704a3779..64099bb7 100644 --- a/internal/query/get_test.go +++ b/internal/query/get_test.go @@ -9,6 +9,7 @@ import ( "testing" "github.com/google/uuid" + "github.com/jackc/pgx/v5/pgtype" "github.com/pashagolub/pgxmock/v3" "github.com/stretchr/testify/assert" ) @@ -51,3 +52,47 @@ func TestGet(t *testing.T) { assert.EqualExportedValues(t, query, *returnQuery) } + +func TestFullActiveQueryEmpty(t *testing.T) { + dbQuery := &repository.Fullactivequery{ + ID: database.MustToDBUUID(uuid.New()), + Type: repository.QuerytypeContextFull, + Activeversion: int32(1), + Latestversion: int32(2), + Config: []byte(""), + Requiredids: []pgtype.UUID{}, + } + + out, err := query.ParseFullActiveQuery(dbQuery) + assert.Nil(t, err) + assert.EqualExportedValues(t, query.Query{ + ID: database.MustToUUID(dbQuery.ID), + Type: queryprocessor.TypeContextFull, + ActiveVersion: int32(1), + LatestVersion: int32(2), + Config: "", + RequiredQueryIDs: []uuid.UUID{}, + }, *out) +} + +func TestFullActiveQueryWithNullUUID(t *testing.T) { + dbQuery := &repository.Fullactivequery{ + ID: database.MustToDBUUID(uuid.New()), + Type: repository.QuerytypeContextFull, + Activeversion: int32(1), + Latestversion: int32(2), + Config: []byte(""), + Requiredids: []pgtype.UUID{database.MustToDBUUID(uuid.Nil)}, + } + + out, err := query.ParseFullActiveQuery(dbQuery) + assert.Nil(t, err) + assert.EqualExportedValues(t, query.Query{ + ID: database.MustToUUID(dbQuery.ID), + Type: queryprocessor.TypeContextFull, + ActiveVersion: int32(1), + LatestVersion: int32(2), + Config: "", + RequiredQueryIDs: []uuid.UUID{}, + }, *out) +} diff --git a/test/queryrunner_test.go b/test/queryRunner/queryrunner_test.go similarity index 100% rename from test/queryrunner_test.go rename to test/queryRunner/queryrunner_test.go diff --git a/test/queryService/exportservice_test.go b/test/queryService/exportservice_test.go new file mode 100644 index 00000000..1017a908 --- /dev/null +++ b/test/queryService/exportservice_test.go @@ -0,0 +1,23 @@ +package integration_test + +import ( + "context" + serviceinterfaces "queryorchestration/api/serviceInterfaces" + "queryorchestration/internal/test" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestExportService(t *testing.T) { + ctx := context.Background() + + conn, cleanup := test.CreateAPIWithDependencies(t, ctx, "queryService") + defer cleanup() + + expClient := serviceinterfaces.NewExportServiceClient(conn) + + idRes, err := expClient.Trigger(ctx, &serviceinterfaces.ExportTrigger{}) + assert.Nil(t, err) + assert.NotNil(t, idRes) +} diff --git a/test/queryService/jobcollectorservice_test.go b/test/queryService/jobcollectorservice_test.go new file mode 100644 index 00000000..279cbf82 --- /dev/null +++ b/test/queryService/jobcollectorservice_test.go @@ -0,0 +1,31 @@ +package integration_test + +import ( + "context" + serviceinterfaces "queryorchestration/api/serviceInterfaces" + "queryorchestration/internal/test" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestJobCollectorService(t *testing.T) { + ctx := context.Background() + + conn, cleanup := test.CreateAPIWithDependencies(t, ctx, "queryService") + defer cleanup() + + collClient := serviceinterfaces.NewJobCollectorServiceClient(conn) + + idRes, err := collClient.Create(ctx, &serviceinterfaces.JobCollectorCreate{}) + assert.Nil(t, err) + assert.NotNil(t, idRes) + + collRes, err := collClient.Get(ctx, &serviceinterfaces.IdMessage{}) + assert.Nil(t, err) + assert.NotNil(t, collRes) + + res, err := collClient.Update(ctx, &serviceinterfaces.JobCollectorUpdate{}) + assert.Nil(t, err) + assert.NotNil(t, res) +} diff --git a/test/queryService/listqueries_test.go b/test/queryService/listqueries_test.go new file mode 100644 index 00000000..06dbf504 --- /dev/null +++ b/test/queryService/listqueries_test.go @@ -0,0 +1,39 @@ +package integration_test + +import ( + "context" + serviceinterfaces "queryorchestration/api/serviceInterfaces" + "queryorchestration/internal/test" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestQueryServiceList(t *testing.T) { + ctx := context.Background() + + conn, cleanup := test.CreateAPIWithDependencies(t, ctx, "queryService") + defer cleanup() + + client := serviceinterfaces.NewQueryServiceClient(conn) + + idRes, err := client.Create(ctx, &serviceinterfaces.QueryCreate{ + Type: serviceinterfaces.QueryType_QUERY_TYPE_CONTEXT_FULL, + Config: nil, + RequiredQueries: []string{}, + }) + assert.Nil(t, err) + id := idRes.GetId() + assert.NotEmpty(t, id) + + queriesRes, err := client.List(ctx, &serviceinterfaces.QueryFilter{}) + assert.Nil(t, err) + assert.Len(t, queriesRes.Queries, 1) + assert.Equal(t, id, queriesRes.Queries[0].Id) + + res, err := client.Update(ctx, &serviceinterfaces.QueryUpdate{ + Id: id, + }) + assert.Nil(t, err) + assert.NotNil(t, res) +} diff --git a/test/queryService/queryservice_test.go b/test/queryService/queryservice_test.go new file mode 100644 index 00000000..6dfddefc --- /dev/null +++ b/test/queryService/queryservice_test.go @@ -0,0 +1,59 @@ +package integration_test + +import ( + "context" + serviceinterfaces "queryorchestration/api/serviceInterfaces" + "queryorchestration/internal/test" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestQueryService(t *testing.T) { + ctx := context.Background() + + conn, cleanup := test.CreateAPIWithDependencies(t, ctx, "queryService") + defer cleanup() + + client := serviceinterfaces.NewQueryServiceClient(conn) + + idRes, err := client.Create(ctx, &serviceinterfaces.QueryCreate{ + Type: serviceinterfaces.QueryType_QUERY_TYPE_CONTEXT_FULL, + Config: nil, + RequiredQueries: []string{}, + }) + assert.Nil(t, err) + id := idRes.GetId() + assert.NotEmpty(t, id) + + queryRes, err := client.Get(ctx, &serviceinterfaces.IdMessage{ + Id: id, + }) + assert.Nil(t, err) + assert.Equal(t, id, queryRes.Id) + assert.Equal(t, serviceinterfaces.QueryType_QUERY_TYPE_CONTEXT_FULL, queryRes.Type) + assert.Equal(t, int32(1), queryRes.ActiveVersion) + assert.Equal(t, int32(1), queryRes.LatestVersion) + assert.Equal(t, "", *queryRes.Config) + assert.Equal(t, []string(nil), queryRes.RequiredQueries) + + res, err := client.Update(ctx, &serviceinterfaces.QueryUpdate{ + Id: id, + Config: nil, + ActiveVersion: nil, + RequiredQueries: []string{}, + }) + assert.Nil(t, err) + assert.NotNil(t, res) + + queryRes, err = client.Get(ctx, &serviceinterfaces.IdMessage{ + Id: id, + }) + assert.Nil(t, err) + assert.Equal(t, id, queryRes.Id) + assert.Equal(t, serviceinterfaces.QueryType_QUERY_TYPE_CONTEXT_FULL, queryRes.Type) + assert.Equal(t, int32(1), queryRes.ActiveVersion) + assert.Equal(t, int32(1), queryRes.LatestVersion) + assert.Equal(t, "", *queryRes.Config) + assert.Equal(t, []string(nil), queryRes.RequiredQueries) +} diff --git a/test/queryService/testquery_test.go b/test/queryService/testquery_test.go new file mode 100644 index 00000000..83ec8864 --- /dev/null +++ b/test/queryService/testquery_test.go @@ -0,0 +1,39 @@ +package integration_test + +import ( + "context" + serviceinterfaces "queryorchestration/api/serviceInterfaces" + "queryorchestration/internal/test" + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" +) + +func TestQueryServiceTest(t *testing.T) { + ctx := context.Background() + + conn, cleanup := test.CreateAPIWithDependencies(t, ctx, "queryService") + defer cleanup() + + client := serviceinterfaces.NewQueryServiceClient(conn) + + idRes, err := client.Create(ctx, &serviceinterfaces.QueryCreate{ + Type: serviceinterfaces.QueryType_QUERY_TYPE_CONTEXT_FULL, + Config: nil, + RequiredQueries: []string{}, + }) + assert.Nil(t, err) + id := idRes.GetId() + assert.NotEmpty(t, id) + + docId := uuid.New() + + testRes, err := client.Test(ctx, &serviceinterfaces.QueryTestRequest{ + QueryId: id, + DocumentId: docId.String(), + QueryVersion: int32(1), + }) + assert.Nil(t, err) + assert.NotNil(t, testRes) +} diff --git a/test/queryservice_test.go b/test/queryservice_test.go deleted file mode 100644 index fbcdb501..00000000 --- a/test/queryservice_test.go +++ /dev/null @@ -1,48 +0,0 @@ -package integration_test - -import ( - "context" - serviceinterfaces "queryorchestration/api/serviceInterfaces" - "queryorchestration/internal/test" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestQueryService(t *testing.T) { - ctx := context.Background() - - conn, cleanup := test.CreateAPIWithDependencies(t, ctx, "queryService") - defer cleanup() - - client := serviceinterfaces.NewQueryServiceClient(conn) - - config := "" - reqQueries := []string{} - idRes, err := client.Create(ctx, &serviceinterfaces.QueryCreate{ - Type: 1, - Config: &config, - RequiredQueries: reqQueries, - }) - assert.Nil(t, err) - id := idRes.GetId() - assert.NotEmpty(t, id) - - // queryRes, err := client.Get(ctx, &serviceinterfaces.IdMessage{ - // Id: id, - // }) - // log.Print(err) - // assert.Nil(t, err) - // assert.EqualExportedValues(t, serviceinterfaces.Query{ - // Id: id, - // Type: serviceinterfaces.QueryType_QUERY_TYPE_CONTEXT_FULL, - // ActiveVersion: int32(1), - // LatestVersion: int32(1), - // Config: &config, - // RequiredQueries: reqQueries, - // }, *queryRes) - - //QueryService - List, Update, Test - //JobController - Create, Update, Get - //Export - Trigger -}