110 lines
3.3 KiB
Go
110 lines
3.3 KiB
Go
// Code generated by BobGen psql v0.0.3-0.20251202003046-49148fc66a73+dirty. DO NOT EDIT.
|
|
// This file is meant to be re-generated in place and/or deleted at any time.
|
|
|
|
package dberrors
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
factory "github.com/Gleipnir-Technology/nidus-sync/db/factory"
|
|
models "github.com/Gleipnir-Technology/nidus-sync/db/models"
|
|
"github.com/stephenafamo/bob"
|
|
)
|
|
|
|
func TestH3AggregationUniqueConstraintErrors(t *testing.T) {
|
|
if testDB == nil {
|
|
t.Skip("No database connection provided")
|
|
}
|
|
|
|
f := factory.New()
|
|
tests := []struct {
|
|
name string
|
|
expectedErr *UniqueConstraintError
|
|
conflictMods func(context.Context, *testing.T, bob.Executor, *models.H3Aggregation) factory.H3AggregationModSlice
|
|
}{
|
|
{
|
|
name: "ErrUniqueH3AggregationPkey",
|
|
expectedErr: H3AggregationErrors.ErrUniqueH3AggregationPkey,
|
|
conflictMods: func(ctx context.Context, t *testing.T, exec bob.Executor, obj *models.H3Aggregation) factory.H3AggregationModSlice {
|
|
shouldUpdate := false
|
|
updateMods := make(factory.H3AggregationModSlice, 0, 1)
|
|
|
|
if shouldUpdate {
|
|
if err := obj.Update(ctx, exec, f.NewH3AggregationWithContext(ctx, updateMods...).BuildSetter()); err != nil {
|
|
t.Fatalf("Error updating object: %v", err)
|
|
}
|
|
}
|
|
|
|
return factory.H3AggregationModSlice{
|
|
factory.H3AggregationMods.ID(obj.ID),
|
|
}
|
|
},
|
|
},
|
|
{
|
|
name: "ErrUniqueH3AggregationCellOrganizationIdType_Key",
|
|
expectedErr: H3AggregationErrors.ErrUniqueH3AggregationCellOrganizationIdType_Key,
|
|
conflictMods: func(ctx context.Context, t *testing.T, exec bob.Executor, obj *models.H3Aggregation) factory.H3AggregationModSlice {
|
|
shouldUpdate := false
|
|
updateMods := make(factory.H3AggregationModSlice, 0, 3)
|
|
|
|
if shouldUpdate {
|
|
if err := obj.Update(ctx, exec, f.NewH3AggregationWithContext(ctx, updateMods...).BuildSetter()); err != nil {
|
|
t.Fatalf("Error updating object: %v", err)
|
|
}
|
|
}
|
|
|
|
return factory.H3AggregationModSlice{
|
|
factory.H3AggregationMods.Cell(obj.Cell),
|
|
factory.H3AggregationMods.OrganizationID(obj.OrganizationID),
|
|
factory.H3AggregationMods.Type(obj.Type),
|
|
}
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
ctx, cancel := context.WithCancel(t.Context())
|
|
t.Cleanup(cancel)
|
|
|
|
tx, err := testDB.Begin(ctx)
|
|
if err != nil {
|
|
t.Fatalf("Couldn't start database transaction: %v", err)
|
|
}
|
|
|
|
defer func() {
|
|
if err := tx.Rollback(ctx); err != nil {
|
|
t.Fatalf("Error rolling back transaction: %v", err)
|
|
}
|
|
}()
|
|
|
|
var exec bob.Executor = tx
|
|
|
|
obj, err := f.NewH3AggregationWithContext(ctx, factory.H3AggregationMods.WithParentsCascading()).Create(ctx, exec)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
obj2, err := f.NewH3AggregationWithContext(ctx).Create(ctx, exec)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = obj2.Update(ctx, exec, f.NewH3AggregationWithContext(ctx, tt.conflictMods(ctx, t, exec, obj)...).BuildSetter())
|
|
if !errors.Is(ErrUniqueConstraint, err) {
|
|
t.Fatalf("Expected: %s, Got: %v", tt.name, err)
|
|
}
|
|
if !errors.Is(tt.expectedErr, err) {
|
|
t.Fatalf("Expected: %s, Got: %v", tt.expectedErr.Error(), err)
|
|
}
|
|
if !ErrUniqueConstraint.Is(err) {
|
|
t.Fatalf("Expected: %s, Got: %v", tt.name, err)
|
|
}
|
|
if !tt.expectedErr.Is(err) {
|
|
t.Fatalf("Expected: %s, Got: %v", tt.expectedErr.Error(), err)
|
|
}
|
|
})
|
|
}
|
|
}
|