package repository_test import ( "context" "testing" "queryorchestration/internal/database/repository" "queryorchestration/internal/serviceconfig" "queryorchestration/internal/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestClient(t *testing.T) { if testing.Short() { t.Skip("Skipping long test in short mode") } ctx := context.Background() cfg := &serviceconfig.BaseConfig{} test.SetCfgProvider(t, cfg) _, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{ Cfg: cfg, RunMigrations: true, }) defer cleanup() queries := cfg.GetDBQueries() name := "example_name" externalId := "EXAMPLE" id, err := queries.CreateClient(ctx, &repository.CreateClientParams{ Name: name, Externalid: externalId, }) require.NoError(t, err) assert.NotEmpty(t, id) client, err := queries.GetClient(ctx, id) require.NoError(t, err) assert.EqualExportedValues(t, &repository.Fullclient{ ID: id, Name: name, Externalid: externalId, Cansync: false, }, client) externalClient, err := queries.GetClientByExternalId(ctx, externalId) require.NoError(t, err) assert.EqualExportedValues(t, client, externalClient) name = "updated_client" err = queries.UpdateClient(ctx, &repository.UpdateClientParams{ ID: id, Name: name, }) require.NoError(t, err) client, err = queries.GetClient(ctx, id) require.NoError(t, err) assert.EqualExportedValues(t, &repository.Fullclient{ ID: id, Name: name, Externalid: externalId, Cansync: false, }, client) err = queries.AddClientCanSync(ctx, &repository.AddClientCanSyncParams{ Clientid: id, Cansync: true, }) require.NoError(t, err) client, err = queries.GetClient(ctx, id) require.NoError(t, err) assert.EqualExportedValues(t, &repository.Fullclient{ ID: id, Name: name, Externalid: externalId, Cansync: true, }, client) _, err = queries.CreateClient(ctx, &repository.CreateClientParams{ Name: name, Externalid: externalId, }) assert.Error(t, err) _, err = queries.CreateClient(ctx, &repository.CreateClientParams{ Name: name, Externalid: "definitely different", }) assert.Error(t, err) _, err = queries.CreateClient(ctx, &repository.CreateClientParams{ Name: "100 different", Externalid: externalId, }) assert.Error(t, err) _, err = queries.CreateClient(ctx, &repository.CreateClientParams{ Name: "sameid", Externalid: "sameid", }) require.NoError(t, err) }