1
0

resolver_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package graph
  2. import (
  3. "context"
  4. "strconv"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "gogs.dmsc.dev/arp/models"
  8. "gorm.io/driver/sqlite"
  9. "gorm.io/gorm"
  10. )
  11. func setupTestDB() (*gorm.DB, error) {
  12. // Use in-memory SQLite database for testing
  13. db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
  14. if err != nil {
  15. return nil, err
  16. }
  17. // Run auto-migration for all models
  18. err = db.AutoMigrate(&models.User{}, &models.Role{}, &models.Permission{}, &models.Service{}, &models.Task{}, &models.TaskStatus{}, &models.Channel{}, &models.Message{}, &models.Note{})
  19. if err != nil {
  20. return nil, err
  21. }
  22. return db, nil
  23. }
  24. func TestResolver_UserQueries(t *testing.T) {
  25. // Setup test database
  26. db, err := setupTestDB()
  27. assert.NoError(t, err)
  28. // Create resolver with test DB
  29. resolver := &Resolver{DB: db}
  30. queryResolver := &queryResolver{resolver}
  31. // Test creating a user
  32. ctx := context.Background()
  33. // Create a user directly without complex relationships for now
  34. user := models.User{
  35. Email: "test@example.com",
  36. Password: "hashed-password",
  37. }
  38. err = db.Create(&user).Error
  39. assert.NoError(t, err)
  40. // Test querying users
  41. users, err := queryResolver.Users(ctx)
  42. assert.NoError(t, err)
  43. assert.NotNil(t, users)
  44. assert.Len(t, users, 1)
  45. // Test querying a single user by ID
  46. userResult, err := queryResolver.User(ctx, strconv.FormatUint(uint64(user.ID), 10))
  47. assert.NoError(t, err)
  48. assert.NotNil(t, userResult)
  49. assert.Equal(t, user.Email, userResult.Email)
  50. }
  51. func TestResolver_RoleQueries(t *testing.T) {
  52. // Setup test database
  53. db, err := setupTestDB()
  54. assert.NoError(t, err)
  55. // Create resolver with test DB
  56. resolver := &Resolver{DB: db}
  57. queryResolver := &queryResolver{resolver}
  58. // Test creating a role
  59. ctx := context.Background()
  60. role := models.Role{
  61. Name: "admin",
  62. Description: "Administrator role",
  63. }
  64. err = db.Create(&role).Error
  65. assert.NoError(t, err)
  66. // Test querying roles
  67. roles, err := queryResolver.Roles(ctx)
  68. assert.NoError(t, err)
  69. assert.NotNil(t, roles)
  70. assert.Len(t, roles, 1)
  71. // Test querying a single role by ID
  72. roleResult, err := queryResolver.Role(ctx, strconv.FormatUint(uint64(role.ID), 10))
  73. assert.NoError(t, err)
  74. assert.NotNil(t, roleResult)
  75. assert.Equal(t, role.Name, roleResult.Name)
  76. }
  77. func TestResolver_ServiceQueries(t *testing.T) {
  78. // Setup test database
  79. db, err := setupTestDB()
  80. assert.NoError(t, err)
  81. // Create resolver with test DB
  82. resolver := &Resolver{DB: db}
  83. queryResolver := &queryResolver{resolver}
  84. // Test creating a service
  85. ctx := context.Background()
  86. service := models.Service{
  87. Name: "Test Service",
  88. Description: "A test service",
  89. }
  90. err = db.Create(&service).Error
  91. assert.NoError(t, err)
  92. // Test querying services
  93. services, err := queryResolver.Services(ctx)
  94. assert.NoError(t, err)
  95. assert.NotNil(t, services)
  96. assert.Len(t, services, 1)
  97. // Test querying a single service by ID
  98. serviceResult, err := queryResolver.Service(ctx, strconv.FormatUint(uint64(service.ID), 10))
  99. assert.NoError(t, err)
  100. assert.NotNil(t, serviceResult)
  101. assert.Equal(t, service.Name, serviceResult.Name)
  102. }