package collector_test import ( "context" "testing" "queryorchestration/internal/database" "queryorchestration/internal/database/repository" "queryorchestration/internal/job/collector" "queryorchestration/internal/serviceconfig" "github.com/stretchr/testify/require" "github.com/google/uuid" "github.com/jackc/pgx/v5" "github.com/pashagolub/pgxmock/v3" "github.com/stretchr/testify/assert" ) func TestCreate(t *testing.T) { ctx := context.Background() pool, err := pgxmock.NewPool() require.NoError(t, err) cfg := &serviceconfig.BaseConfig{} cfg.DBPool = pool cfg.DBQueries = repository.New(pool) svc := collector.New(cfg, &collector.Services{}) minCleanV := int32(1) minTextV := int32(1) create := collector.CreateParams{ JobID: uuid.New(), MinCleanVersion: &minCleanV, MinTextVersion: &minTextV, Fields: &map[string]uuid.UUID{ "example_key": uuid.New(), }, } pool.ExpectQuery("name: AllQueriesExist :one").WithArgs(database.MustToDBUUIDArray([]uuid.UUID{(*create.Fields)["example_key"]})).WillReturnRows( pgxmock.NewRows([]string{"all_exist"}). AddRow(true), ) pool.ExpectBeginTx(pgx.TxOptions{}) pool.ExpectQuery("name: AddLatestCollectorVersion :one").WithArgs(database.MustToDBUUID(create.JobID)).WillReturnRows( pgxmock.NewRows([]string{"version"}). AddRow(int32(1)), ) pool.ExpectExec("name: SetActiveCollectorVersion :exec").WithArgs(database.MustToDBUUID(create.JobID), int32(1)). WillReturnResult(pgxmock.NewResult("", 1)) pool.ExpectExec("name: SetCollectorCleanVersion :exec").WithArgs(database.MustToDBUUID(create.JobID), int32(1), *create.MinCleanVersion). WillReturnResult(pgxmock.NewResult("", 1)) pool.ExpectExec("name: SetCollectorTextVersion :exec").WithArgs(database.MustToDBUUID(create.JobID), int32(1), *create.MinTextVersion). WillReturnResult(pgxmock.NewResult("", 1)) pool.ExpectExec("name: AddCollectorQuery :exec").WithArgs(database.MustToDBUUID(create.JobID), "example_key", database.MustToDBUUID((*create.Fields)["example_key"]), int32(1)). WillReturnResult(pgxmock.NewResult("", 1)) pool.ExpectCommit() err = svc.Create(ctx, &create) assert.NoError(t, err) }