增加站内信未读提醒和后台通知中心+txt 校验
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
package adminnotification
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"hfb_sys/backend/internal/database"
|
||||
"hfb_sys/backend/internal/model"
|
||||
)
|
||||
|
||||
func TestRepositoryUnreadCountAndMarkRead(t *testing.T) {
|
||||
db := database.NewTestDB()
|
||||
if err := db.AutoMigrate(&model.AdminNotification{}); err != nil {
|
||||
t.Fatalf("AutoMigrate() error = %v", err)
|
||||
}
|
||||
repo := NewRepository(db)
|
||||
ctx := context.Background()
|
||||
|
||||
if err := db.Create(&model.AdminNotification{
|
||||
AdminUserID: 7,
|
||||
Type: "system",
|
||||
Title: "库存预警",
|
||||
Content: "二维码库存不足",
|
||||
}).Error; err != nil {
|
||||
t.Fatalf("Create() error = %v", err)
|
||||
}
|
||||
|
||||
count, err := repo.UnreadCount(ctx, 7)
|
||||
if err != nil {
|
||||
t.Fatalf("UnreadCount() error = %v", err)
|
||||
}
|
||||
if count != 1 {
|
||||
t.Fatalf("UnreadCount() = %d, want 1", count)
|
||||
}
|
||||
|
||||
if err := repo.MarkRead(ctx, 7, 1); err != nil {
|
||||
t.Fatalf("MarkRead() error = %v", err)
|
||||
}
|
||||
if err := repo.MarkRead(ctx, 7, 1); err != nil {
|
||||
t.Fatalf("MarkRead() repeat error = %v", err)
|
||||
}
|
||||
|
||||
count, err = repo.UnreadCount(ctx, 7)
|
||||
if err != nil {
|
||||
t.Fatalf("UnreadCount() after read error = %v", err)
|
||||
}
|
||||
if count != 0 {
|
||||
t.Fatalf("UnreadCount() after read = %d, want 0", count)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRepositoryMarkAllRead(t *testing.T) {
|
||||
db := database.NewTestDB()
|
||||
if err := db.AutoMigrate(&model.AdminNotification{}); err != nil {
|
||||
t.Fatalf("AutoMigrate() error = %v", err)
|
||||
}
|
||||
repo := NewRepository(db)
|
||||
ctx := context.Background()
|
||||
|
||||
rows := []model.AdminNotification{
|
||||
{AdminUserID: 7, Type: "system", Title: "一", Content: "一"},
|
||||
{AdminUserID: 7, Type: "system", Title: "二", Content: "二"},
|
||||
{AdminUserID: 8, Type: "system", Title: "三", Content: "三"},
|
||||
}
|
||||
if err := db.Create(&rows).Error; err != nil {
|
||||
t.Fatalf("Create() error = %v", err)
|
||||
}
|
||||
|
||||
affected, err := repo.MarkAllRead(ctx, 7)
|
||||
if err != nil {
|
||||
t.Fatalf("MarkAllRead() error = %v", err)
|
||||
}
|
||||
if affected != 2 {
|
||||
t.Fatalf("MarkAllRead() affected = %d, want 2", affected)
|
||||
}
|
||||
affected, err = repo.MarkAllRead(ctx, 7)
|
||||
if err != nil {
|
||||
t.Fatalf("MarkAllRead() repeat error = %v", err)
|
||||
}
|
||||
if affected != 0 {
|
||||
t.Fatalf("MarkAllRead() repeat affected = %d, want 0", affected)
|
||||
}
|
||||
|
||||
count, err := repo.UnreadCount(ctx, 8)
|
||||
if err != nil {
|
||||
t.Fatalf("UnreadCount() error = %v", err)
|
||||
}
|
||||
if count != 1 {
|
||||
t.Fatalf("other admin UnreadCount() = %d, want 1", count)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRepositoryMarkReadNotFound(t *testing.T) {
|
||||
db := database.NewTestDB()
|
||||
if err := db.AutoMigrate(&model.AdminNotification{}); err != nil {
|
||||
t.Fatalf("AutoMigrate() error = %v", err)
|
||||
}
|
||||
repo := NewRepository(db)
|
||||
|
||||
err := repo.MarkRead(context.Background(), 7, 99)
|
||||
if !errors.Is(err, ErrNotificationNotFound) {
|
||||
t.Fatalf("MarkRead() error = %v, want ErrNotificationNotFound", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user