turash/bugulma/backend/internal/geospatial/geo_helper_test.go

46 lines
1.1 KiB
Go

package geospatial
import (
"testing"
"github.com/stretchr/testify/require"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func TestPointExprAndArgs(t *testing.T) {
db, _ := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
g := NewGeoHelper(db)
expr := g.PointExpr()
require.Contains(t, expr, "ST_SetSRID")
args := g.PointArgs(1.23, 4.56)
require.Equal(t, 2, len(args))
require.Equal(t, 1.23, args[0].(float64))
require.Equal(t, 4.56, args[1].(float64))
}
func TestDWithinAndOrderExpr(t *testing.T) {
db, _ := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
g := NewGeoHelper(db)
dwithin := g.DWithinExpr("geometry_col")
require.Contains(t, dwithin, "ST_DWithin")
require.Contains(t, dwithin, "geometry_col::geography")
order := g.OrderByDistanceExpr("geometry_col")
require.Contains(t, order, "<->")
require.Contains(t, order, "geometry_col")
}
func TestPointRadiusArgs(t *testing.T) {
db, _ := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
g := NewGeoHelper(db)
args := g.PointRadiusArgs(1.0, 2.0, 3.0, false)
require.Equal(t, 3, len(args))
args2 := g.PointRadiusArgs(1.0, 2.0, 3.0, true)
require.Equal(t, 5, len(args2))
}