nidus-sync/db/dberrors/h3_aggregation.bob_test.go

111 lines
3.3 KiB
Go
Raw Normal View History

// Code generated by BobGen psql v0.0.4-0.20251216163753-8e325b7c773a+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)
}
})
}
}