package repository_test import ( "context" "os" "path" "queryorchestration/internal/database" "queryorchestration/internal/database/repository" "queryorchestration/internal/test" "testing" "github.com/jackc/pgx/v5/pgtype" "github.com/stretchr/testify/assert" ) func TestQueries(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) contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull)) assert.Nil(t, err) assert.True(t, contextQueryID.Valid) jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor)) assert.Nil(t, err) assert.True(t, jsonQueryID.Valid) jsonConfig := []byte("{\"path\": \"example_path\"}") err = queries.CreateRequiredQuery(ctx, &repository.CreateRequiredQueryParams{ Queryid: jsonQueryID, Requiredqueryid: contextQueryID, Addedversion: 1, }) assert.Nil(t, err) err = queries.CreateQueryConfig(ctx, &repository.CreateQueryConfigParams{ Queryid: jsonQueryID, Config: jsonConfig, Addedversion: 1, }) assert.Nil(t, err) jsonQuery, err := queries.GetQuery(ctx, jsonQueryID) assert.Nil(t, err) assert.EqualExportedValues(t, repository.Fullactivequery{ ID: jsonQueryID, Type: repository.QuerytypeJsonExtractor, Activeversion: 1, Latestversion: 1, Config: jsonConfig, Requiredids: []pgtype.UUID{contextQueryID}, }, *jsonQuery) jsonQueryConfig, err := queries.GetQueryConfig(ctx, &repository.GetQueryConfigParams{ Queryid: jsonQueryID, Addedversion: jsonQuery.Activeversion, }) assert.Nil(t, err) assert.Equal(t, jsonConfig, jsonQueryConfig.Config) isDeprecated, err := queries.IsQueryDeprecated(ctx, jsonQueryID) assert.Nil(t, err) assert.False(t, isDeprecated) err = queries.DeprecateQuery(ctx, jsonQueryID) assert.Nil(t, err) isDeprecated, err = queries.IsQueryDeprecated(ctx, jsonQueryID) assert.Nil(t, err) assert.True(t, isDeprecated) } func TestQueriesList(t *testing.T) { ctx := context.Background() db, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{ Migrations: &database.MigrationConfig{ BasePath: "../../..", }}) defer cleanup() queries := repository.New(db.Pool) contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull)) assert.Nil(t, err) jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor)) assert.Nil(t, err) qs, err := queries.ListQueries(ctx) assert.Nil(t, err) assert.Len(t, qs, 2) assert.ElementsMatch(t, []*repository.Fullactivequery{ { ID: jsonQueryID, Type: repository.QuerytypeJsonExtractor, Activeversion: 1, Latestversion: 1, Config: nil, Requiredids: []pgtype.UUID{{}}, }, { ID: contextQueryID, Type: repository.QuerytypeContextFull, Activeversion: 1, Latestversion: 1, Config: nil, Requiredids: []pgtype.UUID{{}}, }, }, qs) }