package repository_test import ( "context" "os" "path" "queryorchestration/internal/database" "queryorchestration/internal/database/repository" "queryorchestration/internal/test" "testing" "github.com/google/uuid" "github.com/jackc/pgx/v5/pgtype" "github.com/stretchr/testify/assert" ) func TestResults(t *testing.T) { ctx := context.Background() db, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{ Migrations: &database.MigrationConfig{ BasePath: path.Join(os.Getenv("PWD"), "../../.."), }}) defer cleanup() queries := repository.New(db.Pool) jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor)) assert.Nil(t, err) documentID := database.MustToDBUUID(uuid.New()) jsonQuery, err := queries.GetQuery(ctx, jsonQueryID) assert.Nil(t, err) cleanVersion := int32(1) textVersion := int32(1) jsonResultValue := "example_value" jsonResultID, err := queries.SetResult(ctx, &repository.SetResultParams{ Queryid: jsonQueryID, Documentid: documentID, Value: jsonResultValue, Cleanversion: cleanVersion, Textversion: textVersion, Queryversion: jsonQuery.Activeversion, }) assert.Nil(t, err) assert.True(t, jsonResultID.Valid) resultsByDoc, err := queries.ListResultsByDocumentID(ctx, &repository.ListResultsByDocumentIDParams{ Documentid: documentID, Cleanversion: cleanVersion, Textversion: textVersion, }) assert.Nil(t, err) assert.Len(t, resultsByDoc, 1) assert.ElementsMatch(t, []*repository.ListResultsByDocumentIDRow{ { ID: jsonResultID, Queryid: jsonQueryID, Queryversion: jsonQuery.Activeversion, }, }, resultsByDoc) results, err := queries.ListResultValuesByID(ctx, []pgtype.UUID{jsonResultID}) assert.Nil(t, err) assert.Len(t, results, 1) assert.ElementsMatch(t, []*repository.ListResultValuesByIDRow{ { ID: jsonResultID, Queryid: jsonQueryID, Value: jsonResultValue, }, }, results) }