Files
gochat/backend/internal/repository/notification_setting_repo_test.go
T

108 lines
3.7 KiB
Go

package repository
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/gochat/gochat/internal/model"
)
func TestNotificationSettingRepo_Create(t *testing.T) {
db := setupTestDB(t, &model.NotificationSetting{})
repo := NewNotificationSettingRepo(db)
account := &model.Account{Name: "NSOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
user := &model.User{Name: "NSUser", Email: "nsuser@test.com", AccountID: account.ID}
require.NoError(t, db.Create(user).Error)
ns := &model.NotificationSetting{AccountID: account.ID, UserID: user.ID, EmailFlags: 1, PushFlags: 2}
created, err := repo.Create(ns)
assert.NoError(t, err)
assert.NotZero(t, created.ID)
assert.Equal(t, 1, created.EmailFlags)
}
func TestNotificationSettingRepo_FindByAccountAndUser(t *testing.T) {
db := setupTestDB(t, &model.NotificationSetting{})
repo := NewNotificationSettingRepo(db)
account := &model.Account{Name: "NSFindOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
user := &model.User{Name: "NSFindUser", Email: "nsfinduser@test.com", AccountID: account.ID}
require.NoError(t, db.Create(user).Error)
ns := &model.NotificationSetting{AccountID: account.ID, UserID: user.ID, EmailFlags: 4, PushFlags: 8}
_, err := repo.Create(ns)
require.NoError(t, err)
found, err := repo.FindByAccountAndUser(account.ID, user.ID)
assert.NoError(t, err)
assert.Equal(t, 4, found.EmailFlags)
assert.Equal(t, 8, found.PushFlags)
}
func TestNotificationSettingRepo_FindByAccountAndUser_NotFound(t *testing.T) {
db := setupTestDB(t, &model.NotificationSetting{})
repo := NewNotificationSettingRepo(db)
_, err := repo.FindByAccountAndUser(9999, 9999)
assert.Error(t, err)
}
func TestNotificationSettingRepo_Update(t *testing.T) {
db := setupTestDB(t, &model.NotificationSetting{})
repo := NewNotificationSettingRepo(db)
account := &model.Account{Name: "NSUpdOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
user := &model.User{Name: "NSUpdUser", Email: "nsupduser@test.com", AccountID: account.ID}
require.NoError(t, db.Create(user).Error)
ns := &model.NotificationSetting{AccountID: account.ID, UserID: user.ID, EmailFlags: 0, PushFlags: 0}
_, err := repo.Create(ns)
require.NoError(t, err)
ns.EmailFlags = 16
ns.PushFlags = 32
updated, err := repo.Update(ns)
assert.NoError(t, err)
assert.Equal(t, 16, updated.EmailFlags)
assert.Equal(t, 32, updated.PushFlags)
}
func TestNotificationSettingRepo_UpsertByAccountAndUser_Create(t *testing.T) {
db := setupTestDB(t, &model.NotificationSetting{})
repo := NewNotificationSettingRepo(db)
account := &model.Account{Name: "NSUpsertOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
user := &model.User{Name: "NSUpsertUser", Email: "nsupsertuser@test.com", AccountID: account.ID}
require.NoError(t, db.Create(user).Error)
ns, err := repo.UpsertByAccountAndUser(account.ID, user.ID, 1, 2)
assert.NoError(t, err)
assert.NotZero(t, ns.ID)
assert.Equal(t, 1, ns.EmailFlags)
assert.Equal(t, 2, ns.PushFlags)
}
func TestNotificationSettingRepo_UpsertByAccountAndUser_Update(t *testing.T) {
db := setupTestDB(t, &model.NotificationSetting{})
repo := NewNotificationSettingRepo(db)
account := &model.Account{Name: "NSUpsert2Org", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
user := &model.User{Name: "NSUpsert2User", Email: "nsupsert2user@test.com", AccountID: account.ID}
require.NoError(t, db.Create(user).Error)
// Create first
ns1, err := repo.UpsertByAccountAndUser(account.ID, user.ID, 1, 2)
require.NoError(t, err)
require.NotNil(t, ns1)
assert.Equal(t, 1, ns1.EmailFlags)
assert.Equal(t, 2, ns1.PushFlags)
}