memos/store/test/activity_test.go

102 lines
2.7 KiB
Go

package test
import (
"context"
"testing"
"github.com/stretchr/testify/require"
storepb "github.com/usememos/memos/proto/gen/store"
"github.com/usememos/memos/store"
)
func TestActivityStore(t *testing.T) {
ctx := context.Background()
ts := NewTestingStore(ctx, t)
user, err := createTestingHostUser(ctx, ts)
require.NoError(t, err)
create := &store.Activity{
CreatorID: user.ID,
Type: store.ActivityTypeMemoComment,
Level: store.ActivityLevelInfo,
Payload: &storepb.ActivityPayload{},
}
activity, err := ts.CreateActivity(ctx, create)
require.NoError(t, err)
require.NotNil(t, activity)
activities, err := ts.ListActivities(ctx, &store.FindActivity{
ID: &activity.ID,
})
require.NoError(t, err)
require.Equal(t, 1, len(activities))
require.Equal(t, activity, activities[0])
ts.Close()
}
func TestActivityGetByID(t *testing.T) {
ctx := context.Background()
ts := NewTestingStore(ctx, t)
user, err := createTestingHostUser(ctx, ts)
require.NoError(t, err)
activity, err := ts.CreateActivity(ctx, &store.Activity{
CreatorID: user.ID,
Type: store.ActivityTypeMemoComment,
Level: store.ActivityLevelInfo,
Payload: &storepb.ActivityPayload{},
})
require.NoError(t, err)
// Get activity by ID
found, err := ts.GetActivity(ctx, &store.FindActivity{ID: &activity.ID})
require.NoError(t, err)
require.NotNil(t, found)
require.Equal(t, activity.ID, found.ID)
// Get non-existent activity
nonExistentID := int32(99999)
notFound, err := ts.GetActivity(ctx, &store.FindActivity{ID: &nonExistentID})
require.NoError(t, err)
require.Nil(t, notFound)
ts.Close()
}
func TestActivityListMultiple(t *testing.T) {
ctx := context.Background()
ts := NewTestingStore(ctx, t)
user, err := createTestingHostUser(ctx, ts)
require.NoError(t, err)
// Create multiple activities
_, err = ts.CreateActivity(ctx, &store.Activity{
CreatorID: user.ID,
Type: store.ActivityTypeMemoComment,
Level: store.ActivityLevelInfo,
Payload: &storepb.ActivityPayload{},
})
require.NoError(t, err)
_, err = ts.CreateActivity(ctx, &store.Activity{
CreatorID: user.ID,
Type: store.ActivityTypeMemoComment,
Level: store.ActivityLevelInfo,
Payload: &storepb.ActivityPayload{},
})
require.NoError(t, err)
// List all activities
allActivities, err := ts.ListActivities(ctx, &store.FindActivity{})
require.NoError(t, err)
require.Equal(t, 2, len(allActivities))
// List by type
commentType := store.ActivityTypeMemoComment
commentActivities, err := ts.ListActivities(ctx, &store.FindActivity{Type: &commentType})
require.NoError(t, err)
require.Equal(t, 2, len(commentActivities))
require.Equal(t, store.ActivityTypeMemoComment, commentActivities[0].Type)
ts.Close()
}