package client import ( "context" "testing" "queryorchestration/internal/database/repository" "queryorchestration/internal/serviceconfig" "github.com/google/uuid" "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", ExternalId: "external_id", } aid := uuid.New() pool.ExpectQuery("name: CreateClient :one").WithArgs(params.ExternalId, params.Name). WillReturnRows( pgxmock.NewRows([]string{"id"}). AddRow(aid), ) id, err := svc.Create(ctx, params) require.NoError(t, err) assert.Equal(t, aid, 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", ExternalId: "external_id", } err := svc.normalizeCreate(params) require.NoError(t, err) assert.Equal(t, "client_name", params.Name) assert.Equal(t, "external_id", params.ExternalId) }) t.Run("all change", func(t *testing.T) { params := &CreateParams{ Name: " client_name", ExternalId: " external_id", } err := svc.normalizeCreate(params) require.NoError(t, err) assert.Equal(t, "client_name", params.Name) assert.Equal(t, "external_id", params.ExternalId) }) } func TestNormalizeExternalID(t *testing.T) { externalIds := []string{ "ABC", "ABC_XYZ", "A12B", } for _, id := range externalIds { assert.Nil(t, normalizeExternalID(&id)) } id := " ABC\t" assert.Nil(t, normalizeExternalID(&id)) assert.Equal(t, "ABC", id) }