package client import ( "errors" "testing" "queryorchestration/internal/database/repository" "queryorchestration/internal/serviceconfig" "github.com/pashagolub/pgxmock/v3" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestGet(t *testing.T) { ctx := t.Context() pool, err := pgxmock.NewPool() require.NoError(t, err) cfg := &serviceconfig.BaseConfig{} cfg.DBPool = pool cfg.DBQueries = repository.New(pool) svc := New(cfg) id := "ID" pool.ExpectQuery("name: GetClient :one").WithArgs(id). WillReturnRows( pgxmock.NewRows([]string{"id", "name", "canSync"}). AddRow("ID", "client_name", false), ) cli, err := svc.Get(ctx, id) require.NoError(t, err) assert.EqualExportedValues(t, &Client{ ID: id, Name: "client_name", CanSync: false, }, cli) dberr := "database failure" pool.ExpectQuery("name: GetClient :one").WithArgs(id). WillReturnError(errors.New(dberr)) _, err = svc.Get(ctx, id) assert.EqualError(t, err, dberr) } func TestParseFullClient(t *testing.T) { in := &repository.Fullclient{ Clientid: "external_id", Name: "name", Cansync: true, } out := parseFullClient(in) assert.EqualExportedValues(t, &Client{ ID: "external_id", Name: "name", CanSync: true, }, out) }