Files
Gumble-Backend/internal/util/db/order_by_test.go
Zane Walker 7e940c83a7
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
(Feat): Initial Commit
2026-07-03 19:41:31 +05:30

69 lines
2.4 KiB
Go

package db_test
import (
"database/sql"
"testing"
"allaboutapps.dev/aw/go-starter/internal/models"
"allaboutapps.dev/aw/go-starter/internal/test"
"allaboutapps.dev/aw/go-starter/internal/test/fixtures"
swaggerTypes "allaboutapps.dev/aw/go-starter/internal/types"
"allaboutapps.dev/aw/go-starter/internal/util/db"
"github.com/aarondl/null/v8"
"github.com/aarondl/sqlboiler/v4/boil"
"github.com/aarondl/sqlboiler/v4/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestOrderBy(t *testing.T) {
test.WithTestDatabase(t, func(sqlDB *sql.DB) {
ctx := t.Context()
fix := fixtures.Fixtures()
_, err := fix.UserRequiresConfirmation.Delete(ctx, sqlDB)
require.NoError(t, err)
noUsername := models.User{
Scopes: types.StringArray{"cms"},
}
upperUsername := models.User{
Username: null.StringFrom("USER3@example.com"),
Scopes: types.StringArray{"cms"},
}
err = noUsername.Insert(ctx, sqlDB, boil.Infer())
require.NoError(t, err)
err = upperUsername.Insert(ctx, sqlDB, boil.Infer())
require.NoError(t, err)
users, err := models.Users(db.OrderBy(swaggerTypes.OrderDirAsc, models.TableNames.Users, models.UserColumns.Username)).All(ctx, sqlDB)
require.NoError(t, err)
require.NotEmpty(t, users)
assert.Equal(t, upperUsername.ID, users[0].ID)
assert.Equal(t, upperUsername.Username, users[0].Username)
users, err = models.Users(db.OrderByLower(swaggerTypes.OrderDirAsc, models.TableNames.Users, models.UserColumns.Username)).All(ctx, sqlDB)
require.NoError(t, err)
require.NotEmpty(t, users)
assert.Equal(t, fix.User1.ID, users[0].ID)
assert.Equal(t, fix.User1.Username, users[0].Username)
users, err = models.Users(db.OrderByWithNulls(swaggerTypes.OrderDirAsc, db.OrderByNullsFirst, models.TableNames.Users, models.UserColumns.Username)).All(ctx, sqlDB)
require.NoError(t, err)
require.NotEmpty(t, users)
assert.Equal(t, noUsername.ID, users[0].ID)
assert.Equal(t, noUsername.Username, users[0].Username)
users, err = models.Users(db.OrderByLowerWithNulls(swaggerTypes.OrderDirDesc, db.OrderByNullsLast, models.TableNames.Users, models.UserColumns.Username)).All(ctx, sqlDB)
require.NoError(t, err)
require.NotEmpty(t, users)
assert.Equal(t, fix.UserDeactivated.ID, users[0].ID)
assert.Equal(t, fix.UserDeactivated.Username, users[0].Username)
assert.Equal(t, upperUsername.ID, users[1].ID)
assert.Equal(t, upperUsername.Username, users[1].Username)
})
}