108 lines
3.7 KiB
Go
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)
|
|
}
|