|
- package model
-
- import (
- "testing"
-
- "github.com/glebarez/sqlite"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- "gorm.io/gorm"
- "gorm.io/gorm/logger"
- )
-
- func setupUserAssetGroupDB(t *testing.T) *gorm.DB {
- t.Helper()
-
- db, err := gorm.Open(sqlite.Open("file:user_asset_groups?mode=memory&cache=shared"), &gorm.Config{
- Logger: logger.Default.LogMode(logger.Silent),
- })
- require.NoError(t, err)
-
- sqlDB, err := db.DB()
- require.NoError(t, err)
- sqlDB.SetMaxOpenConns(1)
-
- origDB := DB
- DB = db
- require.NoError(t, db.AutoMigrate(&UserAssetGroup{}))
-
- t.Cleanup(func() {
- DB = origDB
- require.NoError(t, sqlDB.Close())
- })
-
- return db
- }
-
- func TestUserAssetGroupScopesByUserAndChannel(t *testing.T) {
- setupUserAssetGroupDB(t)
-
- require.NoError(t, CreateUserAssetGroup(10, 101, "group-a"))
- require.NoError(t, CreateUserAssetGroup(11, 101, "group-b"))
- require.NoError(t, CreateUserAssetGroup(10, 102, "group-c"))
-
- binding, err := GetUserAssetGroup(10, 101)
- require.NoError(t, err)
- require.NotNil(t, binding)
- assert.Equal(t, "group-a", binding.GroupId)
- }
-
- func TestUserAssetGroupRejectsDuplicateUserChannel(t *testing.T) {
- setupUserAssetGroupDB(t)
-
- require.NoError(t, CreateUserAssetGroup(10, 101, "first"))
- assert.Error(t, CreateUserAssetGroup(10, 101, "second"))
- }
-
- func TestGetUserAssetGroupReturnsNilWhenNotFound(t *testing.T) {
- setupUserAssetGroupDB(t)
-
- binding, err := GetUserAssetGroup(10, 101)
- require.NoError(t, err)
- assert.Nil(t, binding)
- }
|