No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

64 líneas
1.5 KiB

  1. package model
  2. import (
  3. "testing"
  4. "github.com/glebarez/sqlite"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/stretchr/testify/require"
  7. "gorm.io/gorm"
  8. "gorm.io/gorm/logger"
  9. )
  10. func setupUserAssetGroupDB(t *testing.T) *gorm.DB {
  11. t.Helper()
  12. db, err := gorm.Open(sqlite.Open("file:user_asset_groups?mode=memory&cache=shared"), &gorm.Config{
  13. Logger: logger.Default.LogMode(logger.Silent),
  14. })
  15. require.NoError(t, err)
  16. sqlDB, err := db.DB()
  17. require.NoError(t, err)
  18. sqlDB.SetMaxOpenConns(1)
  19. origDB := DB
  20. DB = db
  21. require.NoError(t, db.AutoMigrate(&UserAssetGroup{}))
  22. t.Cleanup(func() {
  23. DB = origDB
  24. require.NoError(t, sqlDB.Close())
  25. })
  26. return db
  27. }
  28. func TestUserAssetGroupScopesByUserAndChannel(t *testing.T) {
  29. setupUserAssetGroupDB(t)
  30. require.NoError(t, CreateUserAssetGroup(10, 101, "group-a"))
  31. require.NoError(t, CreateUserAssetGroup(11, 101, "group-b"))
  32. require.NoError(t, CreateUserAssetGroup(10, 102, "group-c"))
  33. binding, err := GetUserAssetGroup(10, 101)
  34. require.NoError(t, err)
  35. require.NotNil(t, binding)
  36. assert.Equal(t, "group-a", binding.GroupId)
  37. }
  38. func TestUserAssetGroupRejectsDuplicateUserChannel(t *testing.T) {
  39. setupUserAssetGroupDB(t)
  40. require.NoError(t, CreateUserAssetGroup(10, 101, "first"))
  41. assert.Error(t, CreateUserAssetGroup(10, 101, "second"))
  42. }
  43. func TestGetUserAssetGroupReturnsNilWhenNotFound(t *testing.T) {
  44. setupUserAssetGroupDB(t)
  45. binding, err := GetUserAssetGroup(10, 101)
  46. require.NoError(t, err)
  47. assert.Nil(t, binding)
  48. }