nidus-sync/dberrors/h3_aggregation.bob_test.go
Eli Ribble e48abb09c0
Go to h3 v4, Add initial h3 aggregation work
This calculates the summary information of data in h3 nodes and puts it
in the database for fast lookup.
2025-11-13 23:49:12 +00:00

110 lines
3.3 KiB
Go

// Code generated by BobGen psql v0.41.1. 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/factory"
models "github.com/Gleipnir-Technology/nidus-sync/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)
}
})
}
}