This is an intermediate step between shifting from the old fs_* prefixed table names to an entire fieldseeker schema. At this point we have both, and we aren't doing much with the new schema but compiling.
110 lines
3.3 KiB
Go
110 lines
3.3 KiB
Go
// Code generated by BobGen psql v0.42.0. 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)
|
|
}
|
|
})
|
|
}
|
|
}
|