package client import ( "context" "testing" "queryorchestration/internal/database/repository" "queryorchestration/internal/serviceconfig" "github.com/pashagolub/pgxmock/v3" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) 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 := New(cfg) params := CreateParams{ Name: "client_name", ID: "external_id", } pool.ExpectExec("name: CreateClient :exec").WithArgs(params.ID, params.Name). WillReturnResult(pgxmock.NewResult("", 1)) id, err := svc.Create(ctx, params) require.NoError(t, err) assert.Equal(t, params.ID, id) } func TestNormalizeCreate(t *testing.T) { cfg := &serviceconfig.BaseConfig{} svc := New(cfg) t.Run("no change", func(t *testing.T) { params := &CreateParams{ Name: "client_name", ID: "external_id", } err := svc.normalizeCreate(params) require.NoError(t, err) assert.Equal(t, "client_name", params.Name) assert.Equal(t, "external_id", params.ID) }) t.Run("all change", func(t *testing.T) { params := &CreateParams{ Name: " client_name", ID: " external_id", } err := svc.normalizeCreate(params) require.NoError(t, err) assert.Equal(t, "client_name", params.Name) assert.Equal(t, "external_id", params.ID) }) } func TestNormalizeID(t *testing.T) { externalIds := []string{ "ABC", "ABC_XYZ", "A12B", } for _, id := range externalIds { assert.Nil(t, normalizeID(&id)) } id := " ABC\t" assert.Nil(t, normalizeID(&id)) assert.Equal(t, "ABC", id) }